proch_reg Kernel Service
Purpose
Registers a callout handler.
Syntax
#include <sys/proc.h> int proch_reg(struct prochr *)void (*proch_handler)(struct prochr *, int, long)
unsigned int int prochr_maskParameters
| Item | Description |
|---|---|
| int prochr_mask | Specifies the set of kernel events for which a callout is requested. Unlike the old_style
interface, the callout is invoked only for the specified events. This mask is formed by ORing
together any of these defined values:
|
| proch_handler | Specifies the callout function to be called when specified kernel events occur. |
Description
If the
same struct prochr * is registered more than once, only the
most recently specified information is retained in the kernel.
The struct
prochr * is not copied to a new location in memory. As a result,
if the structure is changed, results are unpredictable. This structure
does not need to be pinned.
The primary consideration for the new-style interface is to improve scalability. A lock is only
acquired when callouts are made. A summary mask of all currently registered callout event types is
maintained. This summary mask is updated every time proch_reg or
proch_unreg is called, even when registering an identical struct prochr
*. Further, the lock is a complex lock, so once callouts have been registered, there is no
lock contention in invoking them because the lock is held read-only.
When a callout to a registered handler function is made, the parameters passed are:
- A pointer to the registered prochr structure
- A callout request value to indicate the reason for the callout
- A thread or process ID
Return Values
On successful completion, the proch_reg kernel service returns a value of 0. The only error (non-zero) return is from trying to register with a NULL pointer.
Execution Environment
The proch_reg kernel service can be called from the process environment only.