From 2b86087062256541306212e0d8fc91bd13a19048 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Sun, 23 Aug 2009 15:00:29 +0000 Subject: 2009-08-22 Roxana Leontie * bsp_howto/framebuffer.t: documented the improvements made to read/write --- doc/bsp_howto/framebuffer.t | 50 +++++++-------------------------------------- 1 file changed, 7 insertions(+), 43 deletions(-) (limited to 'doc/bsp_howto') diff --git a/doc/bsp_howto/framebuffer.t b/doc/bsp_howto/framebuffer.t index f4c2a22a30..a470eef7cf 100644 --- a/doc/bsp_howto/framebuffer.t +++ b/doc/bsp_howto/framebuffer.t @@ -150,9 +150,7 @@ rtems_device_driver frame_buffer_close( The @code{frame_buffer_read()} is invoked from a @code{read()} operation on the frame buffer device. -Read functions should allow normal and partial reading at the end of frame buffer memory, -returning RTEMS_UNSATISFIED if trying to read beyond the frame buffer -memory or a negative number of bytes. +Read functions should allow normal and partial reading at the end of frame buffer memory. This method returns RTEMS_SUCCESSFUL when the device is successfully read from: @example @@ -163,27 +161,10 @@ rtems_device_driver frame_buffer_read( void *arg ) @{ - /*printk( "FBVGA read called.\n" );*/ rtems_libio_rw_args_t *rw_args = (rtems_libio_rw_args_t *)arg; - if ( (rw_args->offset >= fb_fix.smem_len) || (rw_args->count < 0) )@{ - return RTEMS_UNSATISFIED; - @} - else - @{ - /*partial reading*/ - if ( (rw_args->offset + rw_args->count) > fb_fix.smem_len )@{ - rw_args->count = fb_fix.smem_len - rw_args->offset; - memcpy(rw_args->buffer, (const void *) (rw_args->offset + fb_fix.smem_start), rw_args->count); - rw_args->bytes_moved = rw_args->count; - return RTEMS_SUCCESSFUL; - @} - /*best reading case*/ - else@{ - memcpy(rw_args->buffer, (const void *) (rw_args->offset + fb_fix.smem_start), rw_args->count); - rw_args->bytes_moved = rw_args->count; - return RTEMS_SUCCESSFUL; - @} - @} + rw_args->bytes_moved = ((rw_args->offset + rw_args->count) > fb_fix.smem_len ) ? (fb_fix.smem_len - rw_args->offset) : rw_args->count; + memcpy(rw_args->buffer, (const void *) (fb_fix.smem_start + rw_args->offset), rw_args->bytes_moved); + return RTEMS_SUCCESSFUL; @} @end group @end example @@ -206,27 +187,10 @@ rtems_device_driver frame_buffer_write( void *arg ) @{ - /*printk( "FBVGA write called.\n" );*/ rtems_libio_rw_args_t *rw_args = (rtems_libio_rw_args_t *)arg; - if ( (rw_args->offset >= fb_fix.smem_len) || (rw_args->count < 0) )@{ - return RTEMS_UNSATISFIED; - @} - else - @{ - /*partial writing*/ - if ( (rw_args->offset + rw_args->count) > fb_fix.smem_len )@{ - rw_args->count = fb_fix.smem_len - rw_args->offset; - memcpy( (void *) (rw_args->offset + fb_fix.smem_start), rw_args->buffer, rw_args->count); - rw_args->bytes_moved = rw_args->count; - return RTEMS_SUCCESSFUL; - @} - /* best writing case*/ - else@{ - memcpy( (void *) (rw_args->offset + fb_fix.smem_start), rw_args->buffer, rw_args->count); - rw_args->bytes_moved = rw_args->count; - return RTEMS_SUCCESSFUL; - @} - @} + rw_args->bytes_moved = ((rw_args->offset + rw_args->count) > fb_fix.smem_len ) ? (fb_fix.smem_len - rw_args->offset) : rw_args->count; + memcpy( (void *) (fb_fix.smem_start + rw_args->offset), rw_args->buffer, rw_args->bytes_moved); + return RTEMS_SUCCESSFUL; @} @end group @end example -- cgit v1.2.3