forked from Imagelibrary/rtems
2009-10-09 Sebastian Huber <Sebastian.Huber@embedded-brains.de>
* cpukit/sapi/include/rtems/io.h: Documentation. * cpukit/sapi/src/ioregisterdriver.c: Call from interrupt context is an error. * cpukit/sapi/src/iounregisterdriver.c: Disable preemption during critical section.
This commit is contained in:
@@ -1,3 +1,11 @@
|
||||
2009-10-09 Sebastian Huber <Sebastian.Huber@embedded-brains.de>
|
||||
|
||||
* cpukit/sapi/include/rtems/io.h: Documentation.
|
||||
* cpukit/sapi/src/ioregisterdriver.c: Call from interrupt context is
|
||||
an error.
|
||||
* cpukit/sapi/src/iounregisterdriver.c: Disable preemption during
|
||||
critical section.
|
||||
|
||||
2009-10-09 Chris Johns <chrisj@rtems.org>
|
||||
|
||||
* libmisc/shell/main_mknod.c: Fixed build problem with networking
|
||||
|
||||
@@ -92,6 +92,7 @@ rtems_status_code rtems_io_driver_io_error(
|
||||
* @retval RTEMS_INVALID_NUMBER Invalid major number.
|
||||
* @retval RTEMS_TOO_MANY No major number available.
|
||||
* @retval RTEMS_RESOURCE_IN_USE Major number in use.
|
||||
* @retval RTEMS_CALLED_FROM_ISR Called from interrupt context.
|
||||
* @retval * Status code depends on rtems_io_initialize().
|
||||
*/
|
||||
rtems_status_code rtems_io_register_driver(
|
||||
@@ -105,6 +106,7 @@ rtems_status_code rtems_io_register_driver(
|
||||
*
|
||||
* @retval RTEMS_SUCCESSFUL Device driver successfully unregistered.
|
||||
* @retval RTEMS_UNSATISFIED Invalid major number.
|
||||
* @retval RTEMS_CALLED_FROM_ISR Called from interrupt context.
|
||||
*/
|
||||
rtems_status_code rtems_io_unregister_driver(
|
||||
rtems_device_major_number major
|
||||
|
||||
@@ -68,6 +68,9 @@ rtems_status_code rtems_io_register_driver(
|
||||
{
|
||||
rtems_device_major_number major_limit = _IO_Number_of_drivers;
|
||||
|
||||
if ( rtems_interrupt_is_in_progress() )
|
||||
return RTEMS_CALLED_FROM_ISR;
|
||||
|
||||
if ( registered_major == NULL )
|
||||
return RTEMS_INVALID_ADDRESS;
|
||||
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
|
||||
#include <rtems/system.h>
|
||||
#include <rtems/io.h>
|
||||
#include <rtems/rtems/intr.h>
|
||||
#include <rtems/score/thread.h>
|
||||
#include <string.h>
|
||||
|
||||
/*
|
||||
@@ -36,13 +38,20 @@ rtems_status_code rtems_io_unregister_driver(
|
||||
rtems_device_major_number major
|
||||
)
|
||||
{
|
||||
if ( rtems_interrupt_is_in_progress() )
|
||||
return RTEMS_CALLED_FROM_ISR;
|
||||
|
||||
if ( major < _IO_Number_of_drivers ) {
|
||||
_Thread_Disable_dispatch();
|
||||
memset(
|
||||
&_IO_Driver_address_table[major],
|
||||
0,
|
||||
sizeof( rtems_driver_address_table )
|
||||
);
|
||||
_Thread_Enable_dispatch();
|
||||
|
||||
return RTEMS_SUCCESSFUL;
|
||||
}
|
||||
|
||||
return RTEMS_UNSATISFIED;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user