Register the minidriver with the system
int mdriver_add(char *name,
int interrupt,
int (*handler)(int state, void *data),
paddr32_t data_paddr,
unsigned data_size)
- name
- An arbitrary character string used for identification purposes.
- interrupt
- The same value that is passed into InterruptAttach()
to attach to a particular
interrupt. It's first checked to make sure it's a valid number,
so you must do an init_intrinfo() to add the interrupt
information to the system page before you can register a minidriver.
(See the Customizing Image Startup Programs chapter of Building Embedded
Systems).
- handler
- This minidriver function is called at various times for the user
to check the device. Do not assume that just because the
handler has been called that the device actually needs servicing.
- data_paddr
- A physical address of a block of memory that is made available
to the minidriver. It can be a predetermined location, or the user could
use the alloc_ram() startup
function to obtain the memory.
- data_size
- The size of the block of memory denoted by data_paddr.
libc
This function registers the minidriver with the system.
It's the prototype of your handler function. This function registers the
minidriver with the system.
The prototype is:
int mdriver_handler(int state, void *data);
The arguments are:
- state
- Indicates when the handler is being called. It can have one of the
following values:
- MDRIVER_INIT
- The driver is being initialized, called from mdriver_add().
The handler is called with this state only once.
- MDRIVER_STARTUP
- The driver is being called from somewhere in startup.
- MDRIVER_STARTUP_PREPARE
- Preparations must take place for minidriver operation outside of
startup environment.
- MDRIVER_STARTUP_FINI
- The last call to the driver from within the startup.
- MDRIVER_KERNEL
- The driver is being called during kernel initialization
- MDRIVER_PROCESS
- The driver is being called during process manager/system initialization.
- MDRIVER_INTR_ATTACH
-
A process is calling.
The InterruptAttachEvent() with the same interrupt number
as the minidriver.
- data
- A pointer that points to virtual address of the block of data
provided as the data_paddr parameter of mdriver_add().
The index into the mdriver section of the system page for the newly added
minidriver, or -1 if the minidriver wasn't added.
Safety: | |
Cancellation point |
Yes |
Interrupt handler |
No |
Signal handler |
No |
Thread |
Yes |