Signal, pulse, or thread?

The second parameter is a pointer to a struct sigevent data structure. This data structure is used to inform the kernel about what kind of event the timer should deliver whenever it "fires." We discussed how to fill in the struct sigevent above in the discussion of signals versus pulses versus thread creation.

So, you'd call timer_create() with CLOCK_REALTIME and a pointer to your struct sigevent data structure, and the kernel would create a timer object for you (which gets returned in the last argument). This timer object is just a small integer that acts as an index into the kernel's timer tables; think of it as a "handle."

At this point, nothing else is going to happen. You've only just created the timer; you haven't triggered it yet.