Skip to content



kcmp - system call used to compare two process id's


kcmp() is a system call used to compare two process identifiers and see if they have objects with the same index of a given type. This is useful for debugging and other system-level activities, such as running another process with similar resources.

The arguments, pid1 and pid2, provide the process identifiers of the two processes to be compared. The type argument provides the type of object to compare and the idx1 and idx2, the indices within the corresponding objects of the two processes.

The possible types and corresponding objects are:

  • 0: File descriptors
  • 1: Virtual memory areas
  • 2: Signals
  • 3: Timers
  • 4: Tasks (thread groups)
  • 5: Process Shared Semaphores
  • 6: Futexes

If the two objects compared have the same index and type, the call returns 0. Otherwise, the call returns -1 and errno is set to ESRCH.

Advantages of using this system call:

  • It can be used to compare two processes quickly and safely.
  • Can be used in debugging scenarios.
  • Can detect any differences between two processes accurately.

One of the drawbacks of kcmp is that it takes a long time to execute, since it has to traverse the objects of both processes.


  • pid1:pid_t - The process identifier of the first process
  • pid2:pid_t - The process identifier of the second process
  • type:int - The type of object to compare. See description for a list of possible types
  • idx1:unsigned long - The index of the object in the first process
  • idx2:unsigned long - The index of the object in the second process

Available Tags

No tags applicable.


No hooks applicable.

Example Use Case

This system call could be used to compare two processes in order to find any differences between them. This could be useful for debugging or for comparing resources between the two.


No known issues.

  • ptrace - system call used to trace a process

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.