summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--c/src/libmisc/ChangeLog7
-rw-r--r--c/src/libmisc/devnull/devnull.c26
-rw-r--r--cpukit/libmisc/ChangeLog7
-rw-r--r--cpukit/libmisc/devnull/devnull.c26
4 files changed, 46 insertions, 20 deletions
diff --git a/c/src/libmisc/ChangeLog b/c/src/libmisc/ChangeLog
index 13713d5f06..ad0a3f6f6c 100644
--- a/c/src/libmisc/ChangeLog
+++ b/c/src/libmisc/ChangeLog
@@ -1,3 +1,10 @@
+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.
+
2001-02-06 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* monitor/mon-command.c: Use #if defined(RTEMS_UNIX).
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;
}
diff --git a/cpukit/libmisc/ChangeLog b/cpukit/libmisc/ChangeLog
index 13713d5f06..ad0a3f6f6c 100644
--- a/cpukit/libmisc/ChangeLog
+++ b/cpukit/libmisc/ChangeLog
@@ -1,3 +1,10 @@
+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.
+
2001-02-06 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* monitor/mon-command.c: Use #if defined(RTEMS_UNIX).
diff --git a/cpukit/libmisc/devnull/devnull.c b/cpukit/libmisc/devnull/devnull.c
index c569fcb2ba..6ea15ea286 100644
--- a/cpukit/libmisc/devnull/devnull.c
+++ b/cpukit/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;
}