diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2001-04-20 13:37:05 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2001-04-20 13:37:05 +0000 |
commit | a5bdcd9881aa1bf8533b933a96812441ba3b7214 (patch) | |
tree | b39151e32fff98167bfd22cdfbe6574840c15783 /c/src/libmisc/devnull/devnull.c | |
parent | 2001-04-20 Joel Sherrill <joel@OARcorp.com> (diff) | |
download | rtems-a5bdcd9881aa1bf8533b933a96812441ba3b7214.tar.bz2 |
2001-04-20 Joel Sherrill <joel@OARcorp.com>
* devnull/devnull.c (null_initialize): Added check to
ensure that the driver is only initialized once. Otherwise,
it will abort when the device /dev/null is present.
(null_write): Do not dereference a NULL pointer.
Diffstat (limited to 'c/src/libmisc/devnull/devnull.c')
-rw-r--r-- | c/src/libmisc/devnull/devnull.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/c/src/libmisc/devnull/devnull.c b/c/src/libmisc/devnull/devnull.c index c569fcb2ba..6ea15ea286 100644 --- a/c/src/libmisc/devnull/devnull.c +++ b/c/src/libmisc/devnull/devnull.c @@ -32,6 +32,7 @@ */ rtems_unsigned32 NULL_major; +static initialized; rtems_device_driver null_initialize( rtems_device_major_number major, @@ -39,18 +40,22 @@ rtems_device_driver null_initialize( void *pargp ) { - rtems_device_driver status ; + rtems_device_driver status; - status = rtems_io_register_name( - "/dev/null", - major, - (rtems_device_minor_number) 0 + if ( !initialized ) { + initialized = 1; + + status = rtems_io_register_name( + "/dev/null", + major, + (rtems_device_minor_number) 0 ); - if (status != RTEMS_SUCCESSFUL) - rtems_fatal_error_occurred(status); + if (status != RTEMS_SUCCESSFUL) + rtems_fatal_error_occurred(status); - NULL_major = major; + NULL_major = major; + } return RTEMS_SUCCESSFUL; } @@ -143,9 +148,10 @@ rtems_device_driver null_write( void *pargp ) { - rtems_libio_rw_args_t *rw_args = (rtems_libio_rw_args_t *) pargp ; + rtems_libio_rw_args_t *rw_args = (rtems_libio_rw_args_t *) pargp; - rw_args->bytes_moved = rw_args->count ; + if ( rw_args ) + rw_args->bytes_moved = rw_args->count; return NULL_SUCCESSFUL; } |