Skip to content



iopl - set the I/O privilege level of the current process


The iopl syscall sets the I/O privilege level of the current process. It allows a process to have access to I/O port addresses that would otherwise be unavailable. It requires supervisor privileges to execute. If the argument is 0, the I/O privilege level of the current process is set to 0, disabling I/O port access.

The I/O privilege level is a construct used by some operating systems that allow for a higher level of control when performing input/output operations. The idea is that certain restricted operations can only be performed by processes that have been granted supervisory privileges.

There are several drawbacks to using iopl, such as system instability and security risks. Since the caller has full access to the I/O ports, they could gain unauthorized access, modify or remove critical data, or cause the system to crash.


  • level:int[K] - the privilege level the current process should be set to. If the argument is 0, all I/O port access for the current process is disabled.

Available Tags

  • K - Originated from kernel-space.






To capture and monitor calls to the iopl syscall, and the arguments passed to it.

Example Use Case

The iopl syscall can be used by security moniroting applications to detect attempts to set the I/O privilege level, and log the corresponding information.


This syscall is not available on all architectures. Furthermore, it cannot be used on kernel versions before 4.7.

Other syscalls related to accessing I/O ports: ioperm, iopl, portio_in, portio_out

This document was automatically generated by OpenAI and needs review. It might not be accurate and might contain errors. The authors of Tracee recommend that the user reads the "events.go" source file to understand the events and their arguments better.