idle is an internal system call used during bootstrap. It marks the processs pages as swappable, lowers its priority, and enters the main scheduling loop. idle never returns.
Only process 0 may call idle. Any user process, even a process with super-user permission, will receive EPERM.
idle never returns for process 0, and always returns -1 for a user process.