This list is divided into parts based on the execution environment from which each kernel service can be called:
"System Calls Available to Kernel Extensions" lists the systems calls that can be called by kernel extensions.
Click here to go directly to a part of the list:
   
A - D,    
E - I,    
J - P,    
Q - U,    
V - Z
  
| add_domain_af | Adds an address family to the Address Family domain switch table. | 
| add_input_type | Adds a new input type to the Network Input table. | 
| add_netisr | Adds a network software interrupt service to the Network Interrupt table. | 
| add_netopt | Adds a network option structure to the list of network options. | 
| as_getsrval | Obtains a handle to the virtual memory object for the specified address given in the specified address space. | 
| bdwrite | Releases the specified buffer after marking it for delayed write. | 
| brelse | Frees the specified buffer. | 
| _check_lock | Conditionally updates a single word variable atomically, issuing an import fence for multiprocessor systems. | 
| _clear_lock | Atomically writes a single word variable, issuing an export fence for multiprocessor systems. | 
| clrbuf | Sets the memory for the specified buffer structure's buffer to all zeros. | 
| clrjmpx | Removes a saved context by popping the most recently saved jump buffer from the list of saved contexts. | 
| compare_and_swap | Conditionally updates or returns a single word variable atomically. | 
| curtime | Reads the current time into a time structure. | 
| d_align | Assists in allocation of DMA buffers. | 
| d_cflush | Flushes the processor and I/O controller (IOCC) data caches when using the long term DMA_WRITE_ONLY mapping of Direct Memory Access (DMA) buffers approach to bus device DMA. | 
| d_clear | Frees a DMA channel. | 
| d_complete | Cleans up after a DMA transfer. | 
| d_init | Initializes a DMA channel. | 
| d_mask | Disables a DMA channel. | 
| d_master | Initializes a block-mode DMA transfer for a DMA master. | 
| d_move | Provides consistent access to system memory that is accessed asynchronously by a device and by the processor on the system. | 
| d_roundup | Assists in allocation of DMA buffers. | 
| d_slave | Initializes a block-mode DMA transfer for a DMA slave. | 
| d_unmask | Enables a DMA channel. | 
| del_domain_af | Deletes an address family from the Address Family domain switch table. | 
| del_input_type | Deletes an input type from the Network Input table. | 
| del_netisr | Deletes a network software interrupt service routine from the Network Interrupt table. | 
| del_netopt | Deletes a network option structure from the list of network options. | 
| devdump | Calls a device driver dump-to-device routine. | 
| devstrat | Calls a block device driver's strategy routine. | 
| devswqry | Checks the status of a device switch entry in the device switch table. | 
| disable_lock | Raises the interrupt priority, and locks a simple lock if necessary. | 
| DTOM macro | Converts an address anywhere within an mbuf structure to the head of that mbuf structure. | 
| e_clear_wait | Clears the wait condition for a kernel thread. | 
| e_wakeup, e_wakeup_one,or e_wakeup_w_result | |
| Notifies kernel threads waiting on a shared event of the event's occurrence. | |
| e_wakeup_w_sig | Posts a signal to sleeping kernel threads. | 
| errsave and errlast | Allows the kernel and kernel extensions to write to the error log. | 
| et_post | Notifies a kernel thread of the occurrence of one or more events. | 
| fetch_and_add | Increments a single word variable atomically. | 
| fetch_and_and, fetch_and_or | |
| Manipulates bits in a single word variable atomically. | |
| find_input_type | Finds the given packet type in the Network Input Interface switch table and distributes the input packet according to the table entry for that type. | 
| getc | Retrieves a character from a character list. | 
| getcb | Removes the first buffer from a character list and returns the address of the removed buffer. | 
| getcbp | Retrieves multiple characters from a character buffer and places them at a designated address. | 
| getcf | Retrieves a free character buffer. | 
| getcx | Returns the character at the end of a designated list. | 
| geterror | Determines the completion status of the buffer. | 
| getexcept | Allows kernel exception handlers to retrieve additional exception information. | 
| getpid | Gets the process ID of the current process. | 
| i_disable | Disables all of the interrupt levels at a particular interrupt priority and all interrupt levels at a less-favored interrupt priority. | 
| i_enable | Enables all of the interrupt levels at a particular interrupt priority and all interrupt levels at a more-favored interrupt priority. | 
| i_mask | Disables an interrupt level. | 
| i_reset | Resets the system's hardware interrupt latches. | 
| i_sched | Schedules off-level processing. | 
| i_unmask | Enables an interrupt level. | 
| if_attach | Adds a network interface to the network interface list. | 
| if_detach | Deletes a network interface from the network interface list. | 
| if_down | Marks an interface as down. | 
| if_nostat | Zeros statistical elements of the interface array in preparation for an attach operation. | 
| ifa_ifwithaddr | Locates an interface based on a complete address. | 
| ifa_ifwithdstaddr | Locates the point-to-point interface with a given destination address. | 
| ifa_ifwithnet | Locates an interface on a specific network. | 
| ifunit | Returns a pointer to the ifnet structure of the requested interface. | 
| io_att | Selects, allocates, and maps a region in the current address space for I/O access. | 
| io_det | Unmaps and deallocates the region in the current address space at the given address. | 
| iodone | Performs block I/O completion processing. | 
| kgethostname | Retrieves the name of the current host. | 
| kgettickd | Retrieves the current status of the systemwide time-of-day timer-adjustment values. | 
| ksettickd | Sets the current status of the systemwide timer-adjustment values. | 
| kthread_kill | Posts a signal to a specified kernel thread. | 
| loifp | Returns the address of the software loopback interface structure. | 
| longjmpx | Allows exception handling by causing execution to resume at the most recently saved context. | 
| looutput | Sends data through a software loopback interface. | 
| m_adj | Adjusts the size of an mbuf chain. | 
| m_cat | Appends one mbuf chain to the end of another. | 
| m_clattach | Allocates an mbuf structure and attaches an external cluster. | 
| m_clget macro | Allocates a page-sized mbuf structure cluster. | 
| m_clgetm | Allocates and attaches an external buffer. | 
| m_collapse | Guarantees that an mbuf chain contains no more than a given number of mbuf structures. | 
| m_copy macro | Creates a copy of all or part of a list of mbuf structures. | 
| m_copydata | Copies data from an mbuf chain to a specified buffer. | 
| m_copym | Creates a copy of all or part of a list of mbuf structures. | 
| m_free | Frees an mbuf structure and any associated external storage area. | 
| m_freem | Frees an entire mbuf chain. | 
| m_get | Allocates a memory buffer from the mbuf pool. | 
| m_getclr | Allocates and zeros a memory buffer from the mbuf pool. | 
| m_getclust macro | Allocates an mbuf structure from the mbuf buffer pool and attaches a page-sized cluster. | 
| m_getclustm | Allocates an mbuf structure from the mbuf buffer pool and attaches a cluster of the specified size. | 
| m_gethdr | Allocates a header memory buffer from the mbuf pool. | 
| M_HASCL macro | Determines if an mbuf structure has an attached cluster. | 
| m_pullup | Adjusts an mbuf chain so that a given number of bytes is in contiguous memory in the data area of the head mbuf structure. | 
| MTOCL macro | Converts a pointer to an mbuf structure to a pointer to the head of an attached cluster. | 
| MTOD macro | Converts a pointer to an mbuf structure to a pointer to the data stored in that mbuf structure. | 
| M_XMEMD macro | Returns the address of an mbuf cross-memory descriptor. | 
| net_error | Handles errors for AIX communication network interface drivers. | 
| net_start_done | Starts the done notification handler for AIX communications I/O device handlers. | 
| net_wakeup | Wakes up all sleepers waiting on the specified wait channel. | 
| net_xmit | Transmits data using an AIX communications I/O device handler. | 
| net_xmit_trace | Traces transmit packets. This kernel service was added for those network interfaces that choose not to use the net_xmit kernel service to trace transmit packets. | 
| panic | Crashes the system. | 
| pci_cfgrw | Reads and writes PCI bus slot configuration registers. | 
| pfctlinput | Invokes the ctlinput function for each configured protocol. | 
| pffindproto | Returns the address of a protocol switch table entry. | 
| pidsig | Sends a signal to a process. | 
| pgsignal | Sends a signal to a process group. | 
| pio_assist | Provides a standardized programmed I/O exception handling mechanism for all routines performing programmed I/O. | 
| pm_planar_control | Controls power of a specified device on the planar. | 
| pm_register_handle | Registers and unregisters Power Management handle. | 
| pm_register_planar_control_handle | |
| Registers and unregisters a planar control subroutine. | |
| putc | Places a character at the end of a character list. | 
| putcb | Places a character buffer at the end of a character list. | 
| putcbp | Places several characters at the end of a character list. | 
| putcf | Frees a specified buffer. | 
| putcfl | Frees the specified list of buffers. | 
| putcx | Places a character on a character list. | 
| There are no services starting with q in this list. | |
| raw_input | Builds a raw_header structure for a packet and sends both to the raw protocol handler. | 
| raw_usrreq | Implements user requests for raw protocols. | 
| rtalloc | Allocates a route. | 
| rtfree | Frees the routing table entry. | 
| rtinit | Sets up a routing table entry, typically for a network interface. | 
| rtredirect | Forces a routing table entry with the specified destination to go through the given gateway. | 
| rtrequest | Carries out a request to change the routing table. | 
| _safe_fetch | Atomically reads a single word variable, issuing an import fence for multiprocessor systems. | 
| schednetisr | Schedules or invokes a network software interrupt service routine. | 
| selnotify | Wakes up processes waiting in a poll or select subroutine or the fp_poll kernel service. | 
| setjmpx | Allows saving the current execution state or context. | 
| setpinit | Sets the parent of the current kernel process to the init process. | 
| tfree | Deallocates a timer request block. | 
| timeout | Schedules a function to be called after a specified interval. | 
| thread_self | Returns the caller's kernel thread ID. | 
| trcgenk | Records a trace event for a generic trace channel. | 
| trcgenkt | Records a trace event, including a time stamp, for a generic trace channel. | 
| tstart | Submits a timer request. | 
| tstop | Cancels a pending timer request. | 
| uexblock | Makes a kernel thread non-runnable when called from a user-mode exception handler. | 
| uexclear | Makes a kernel thread blocked by the uexblock service runnable again. | 
| unlock_enable | Unlocks a simple lock if necessary, and restores the interrupt priority. | 
| unpin | Unpins the address range in system (kernel) address space. | 
| unpinu | Unpins the specified address range in user or system memory. | 
| untimeout | Cancels a pending timer request. | 
| vm_att | Maps a specified virtual memory object to a region in the current address space. | 
| vm_det | Unmaps and deallocates the region in the current address space that contains a given address. | 
| xmdetach | Detaches from a user buffer used for cross-memory operations. | 
| xmemdma | Prepares a page for DMA I/O or processes a page after DMA I/O is complete. | 
| xmemin | Performs a cross-memory move by copying data from the specified address space to kernel global memory. | 
| xmemout | Performs a cross-memory move by copying data from kernel global memory to a specified address space. | 
| xmemunpin | Unpins the specified address range in user or system memory, given a valid cross-memory descriptor. | 
Click here to go directly to a part of the list:
   
A - D,    
E - I,    
J - P,    
Q - U,    
V - Z
  
| as_att | Selects, allocates, and maps a region in the specified address space for the specified virtual memory object. | 
| as_det | Unmaps and deallocates a region in the specified address space that was mapped with the as_att kernel service. | 
| as_geth | Obtains a handle to the virtual memory object for the specified address given in the specified address space. The virtual memory object is protected. | 
| as_puth | Indicates that no more references will be made to a virtual memory object that was obtained using the as_geth kernel service. | 
| as_seth | Maps a specified region in the specified address space for the specified virtual memory object | 
| audit_svcbcopy | Appends event information to the current audit event buffer. | 
| audit_svcfinis | Writes an audit record for a kernel service. | 
| audit_svcstart | Initiates an audit record for a system call. | 
| bawrite | Writes the specified buffer's data without waiting for I/O to complete. | 
| bflush | Flushes all write-behind blocks on the specified device from the buffer cache. | 
| binval | Invalidates all of a specified device's data in the buffer cache. | 
| bindprocessor | Binds a process or thread to a processor. | 
| blkflush | Flushes the specified block if it is in the buffer cache. | 
| bread | Reads the specified block's data into a buffer. | 
| breada | Reads in the specified block and then starts I/O on the read-ahead block. | 
| bwrite | Writes the specified buffer's data. | 
| cfgnadd | Registers a notification routine to be called when system-configurable variables are changed. | 
| cfgndel | Removes a notification routine for receiving broadcasts of changes to system configurable variables. | 
| copyin | Copies data between user and kernel memory. | 
| copyinstr | Copies a character string (including the terminating NULL character) from user to kernel space. | 
| copyout | Copies data between user and kernel memory. | 
| creatp | Creates a new kernel process. | 
| delay | Suspends the calling process for the specified number of timer ticks. | 
| devswadd | Adds a device entry to the device switch table. | 
| devswdel | Deletes a device driver entry from the device switch table. | 
| dmp_add | Specifies data to be included in a system dump by adding an entry to the master dump table. | 
| dmp_del | Deletes an entry from the master dump table. | 
| dmp_prinit | Initializes the remote dump protocol. | 
| e_assert_wait | Asserts that the calling thread is going to sleep. | 
| e_block_thread | Blocks the calling thread. | 
| e_sleep, e_sleepl, or e_sleep_thread | |
| Forces the calling thread to wait the occurrence of a shared event. | |
| et_wait | Forces the caller to wait for the occurrence of an event. | 
| fp_access | Checks for access permission to an open file. | 
| fp_close | Closes a file. | 
| fp_fstat | Gets the attributes of an open file. | 
| fp_getdevno | Gets the device number and/or channel number for a device. | 
| fp_getf | Retrieves a pointer to a file structure. | 
| fp_hold | Increments the open count for a specified file pointer. | 
| fp_ioctl | Issues a control command to an open device or file. | 
| fp_llseek | Changes the current offset in an open file. Used to access offsets beyond 2GB. | 
| fp_lseek | Changes the current offset in an open file. | 
| fp_open | Opens a regular file or directory. | 
| fp_opendev | Opens a device special file. | 
| fp_poll | Checks the I/O status of multiple file pointers/descriptors and message queues. | 
| fp_read | Performs a read on an open file with arguments passed. | 
| fp_readv | Performs a read operation on an open file with arguments passed in iovec elements. | 
| fp_rwuio | Performs read and write on an open file with arguments passed in a uio structure. | 
| fp_select | Provides for cascaded, or redirected, support of the select or poll request. | 
| fp_write | Performs a write operation on an open file with arguments passed. | 
| fp_writev | Performs a write operation on an open file with arguments passed in iovec elements. | 
| fubyte | Fetches, or retrieves, a byte of data from user memory. | 
| fuword | Fetches, or retrieves, a word of data from user memory. | 
| getadsp | Obtains a pointer to the current process's address space structure for use with the as_att and as_det kernel services. | 
| getblk | Assigns a buffer to the specified block. | 
| geteblk | Allocates a free buffer. | 
| getppidx | Gets the parent process ID of the specified process. | 
| getuerror | Allows kernel extensions to retrieve the current value of the ut_error field. | 
| gfsadd | Adds a file system type to the gfs table. | 
| gfsdel | Removes a file system type from the gfs table. | 
| i_clear | Removes an interrupt handler from the system. | 
| i_init | Defines an interrupt handler to the system, connects it to an interrupt level, and assigns an interrupt priority to the level. | 
| init_heap | Initializes a new heap to be used with kernel memory management services. | 
| initp | Changes the state of a kernel process from idle to ready. | 
| iostadd | Registers an I/O statistics structure used for updating I/O statistics reported by the iostat subroutine. | 
| iostdel | Removes the registration of an I/O statistics structure used for maintaining I/O statistics on a particular device. | 
| iowait | Waits for block I/O completion. | 
| kmod_entrypt | Returns a function pointer to a kernel module's entry point. | 
| kmod_load | Loads an object file into the kernel or queries for an object file already loaded. | 
| kmod_unload | Unloads a kernel object file. | 
| kmsgctl | Provides message queue control operations. | 
| kmsgget | Obtains a message queue identifier. | 
| kmsgrcv | Reads a message from a message queue. | 
| kmsgsnd | Sends a message using a previously defined message queue. | 
| ksettimer | Sets the systemwide time-of-day timer. | 
| kthread_start | Starts a previously created kernel-only thread. | 
| limit_sigs | Changes the signal mask for the calling thread. | 
| lock_alloc | Allocates memory for a simple or complex lock. | 
| lock_clear_recursive | Prevents a complex lock from being acquired recursively. | 
| lock_done | Releases a complex lock. | 
| lock_free | Frees the memory of a simple or complex lock. | 
| lock_init | Initializes a complex lock. | 
| lock_islocked | Tests whether a complex lock is locked. | 
| lock_mine | Checks whether a simple or complex lock is owned by the caller. | 
| lock_read, lock_try_read | Locks a complex lock in shared-read mode. | 
| lock_read_to_write, lock_try_read_to_write | |
| Upgrades a complex lock from shared-read mode to exclusive-write mode. | |
| lock_set_recursive | Prepares a complex lock for recursive use. | 
| lock_write, lock_try_write | Locks a complex lock in exclusive-write mode. | 
| lock_write_to_read | Downgrades a complex lock from exclusive-write mode to shared-read mode. | 
| lockl | Locks a conventional process lock. | 
| lookupvp | Retrieves the vnode that corresponds to the named path. | 
| m_dereg | Deregisters expected mbuf structure usage. | 
| m_reg | Registers expected mbuf usage. | 
| net_attach | Opens a communications I/O device handler. | 
| net_detach | Closes a communications I/O device handler. | 
| net_sleep | Sleeps on the specified wait channel. | 
| net_start | Starts network IDs on a communications I/O device handler. | 
| NLuprintf | Submits a request to print an internationalized message to the controlling terminal of a process. | 
| pin | Pins the address range in the system (kernel) space. | 
| pincf | Manages the list of free character buffers. | 
| pincode | Pins the code and data associated with an object file. | 
| pinu | Pins the specified address range in user or system memory. | 
| prochadd | Adds a systemwide process state-change notification routine. | 
| prochdel | Deletes a process state change notification routine. | 
| purblk | Invalidates a specified block's data in the buffer cache. | 
| There are no services starting with q in this list. | |
| rusage_incr | Increments a field of the rusage structure. | 
| setuerror | Allows kernel extensions to set the ut _error field in the u area. | 
| sig_chk | Provides the calling kernel thread the ability to poll for receipt of signals. | 
| sigsetmask | Changes the signal mask for the calling kernel thread. | 
| simple_lock_init | Initializes a simple lock. | 
| simple_lock, simple_lock_try | |
| Locks a simple lock. | |
| simple_unlock | Unlocks a simple lock. | 
| sleep | Forces the calling kernel thread to wait on a specified channel. | 
| subyte | Stores a byte of data in user memory. | 
| suser | Determines the privilege state of a process. | 
| suword | Stores a word of data in user memory. | 
| talloc | Allocates a timer request block before starting a timer request. | 
| thread_create | Creates a new process thread in the calling process. | 
| thread_setsched | Sets process kernel thread scheduling parameters. | 
| thread_terminate | Terminates the calling process kernel thread. | 
| timeoutcf | Allocates or deallocates callout table entries for use with the timeout kernel service. | 
| uexadd | Adds a systemwide exception handler for catching user-mode process exceptions. | 
| uexdel | Deletes a previously added systemwide user-mode exception handler. | 
| ufdcreate | Provides a file interface to kernel services. | 
| uiomove | Moves a block of data between kernel space and a space defined by a uio structure. | 
| unlockl | Unlocks a conventional process lock. | 
| unpincode | Unpins the code and data associated with an object file. | 
| uprintf | Submits a request to print a message to the controlling terminal of a process. | 
| uphysio | Performs character I/O for a block device using a uio structure. | 
| ureadc | Writes a character to a buffer described by a uio structure. | 
| uwritec | Retrieves a character from a buffer described by a uio structure. | 
| vfsrele | Points to a virtual file system structure. | 
| vm_cflush | Flushes the processor's cache for a specified address range. | 
| vm_handle | Constructs a virtual memory handle for mapping a virtual memory object with specified access level. | 
| vm_makep | Makes a page in client storage. | 
| vm_mount | Adds a file system to the paging device table. | 
| vm_move | Moves data between a virtual memory object and a buffer specified in the uio structure. | 
| vm_protectp | Sets the page protection key for a page range. | 
| vm_qmodify | Determines whether a mapped file has been changed. | 
| vm_release | Releases virtual memory resources for the specified address range. | 
| vm_releasep | Releases virtual memory resources for the specified page range. | 
| vm_uiomove | Moves data between a virtual memory object and a buffer specified in the uio structure. | 
| vm_umount | Removes a file system from the paging device table. | 
| vm_write | Initiates page-out for a page range in the address space. | 
| vm_writep | Initiates page-out for a page range in a virtual memory object. | 
| vms_create | Creates a virtual memory object of the type and size and limits specified. | 
| vms_delete | Deletes a virtual memory object. | 
| vms_iowait | Waits for the completion of all page-out operations for pages in the virtual memory object. | 
| vn_free | Frees a vnode previously allocated by the vn_get kernel service. | 
| vn_get | Allocates a virtual node and inserts it into the list of vnodes for the designated virtual file system. | 
| waitcfree | Checks the availability of a free character buffer. | 
| w_clear | Removes a watchdog timer from the list of watchdog timers known to the kernel. | 
| w_init | Registers a watchdog timer with the kernel. | 
| w_start | Starts a watchdog timer. | 
| w_stop | Stops a watchdog timer. | 
| xmalloc | Allocates memory. | 
| xmattach | Attaches to a user buffer for cross-memory operations. | 
| xmempin | Pins the specified address range in user or system memory, given a valid cross-memory descriptor. | 
| xmfree | Frees allocated memory. |