Updated: October 26, 2022


void callout_register_data( void *rp,
                            void *data );


This function lets you associate a pointer to arbitrary data with a kernel callout. This data pointer is passed to the patcher routine (see Patching the kernel callout code below).

The rp argument is a pointer to the pointer where the kernel callout address is stored in the system page you're building. For example, say you have a pointer to a system page section that you're working on called foo. In the section there's a field bar that points to a kernel callout when the system page is finished. Here's the code:

// This sets the callout in the syspage:

foo->bar = (void *)&callout_routine_name;

// This registers data to pass to the patcher when we're
// building the final version of the system page:

callout_register_data(&foo->bar, &some_interesting_data_for_patcher);

When the patcher is called to fix up the kernel callout that's pointed at by foo->bar, &some_interesting_data_for_patcher is passed to it.