Keywords - S
 · ! · 0 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z · 
- _SC_PAGESIZE
 
- 
			·
			The “stack” thread attributes ·
 
- scalability
 
- 
			·
			Comparisons ·
	
	- due to modularity
 
	- 
			·
			A small microkernel and message passing ·
	
 
	
	
	- over network of SMP
 
	- 
			·
			Multi-threaded server ·
	
 
	
 
- scatter/gather
 
- 
	
	- defined
 
	- 
			·
			Glossary ·
	
 
	
	
	- operation
 
	- 
			·
			Multipart messages ·
	
 
	
 
- SCHED_FIFO
 
- 
			·
			The “scheduling” thread attributes ·
 
- sched_get_priority_max()
 
- 
			·
			Prioritization ·
 
- sched_get_priority_min()
 
- 
			·
			Prioritization ·
 
- SCHED_OTHER
 
- 
			·
			The “scheduling” thread attributes ·
 
- SCHED_RR
 
- 
			·
			The “scheduling” thread attributes ·
 
- sched_rr_get_interval()
 
- 
			·
			Round Robin ·
 
- sched_yield()
 
- 
			·
			FIFO ·
 
- scheduling
 
- 
			·
			Scheduling and the real world ·
	
	- algorithms
 
	- 
			·
			Scheduling policies ·
		
		- FIFO
 
		- 
			·
			Scheduling policies ·
		
 
		
		
		- RR
 
		- 
			·
			Scheduling policies ·
		
 
		
	 
	
	
	- events in the future using timers
 
	- 
			·
			Types of timers ·
	
 
	
	
	- faults
 
	- 
			·
			Rescheduling — exceptions ·
			Scheduling and the real world ·
	
 
	
	
	- FIFO
 
	- 
		
		- defined
 
		- 
			·
			Glossary ·
		
 
		
	 
	
	
	- hardware interrupts
 
	- 
			·
			Operating periodically ·
			Rescheduling — hardware interrupts ·
			Scheduling and the real world ·
	
 
	
	
	- impact of interrupts
 
	- 
			·
			Interrupt service routine ·
	
 
	
	
	- interrupts
 
	- 
			·
			Neutrino and interrupts ·
			Rescheduling — hardware interrupts ·
	
 
	
	
	- kernel calls
 
	- 
			·
			Operating periodically ·
			Rescheduling — kernel calls ·
			Scheduling and the real world ·
	
 
	
	
	- one shot events in the future
 
	- 
			·
			Types of timers ·
	
 
	
	
	- other hardware
 
	- 
			·
			Rescheduling — hardware interrupts ·
	
 
	
	
	- periodic events using timers
 
	- 
			·
			Types of timers ·
	
 
	
	
	- priority zero
 
	- 
			·
			The “scheduling” thread attributes ·
	
 
	
	
	- round robin
 
	- 
		
		- defined
 
		- 
			·
			Glossary ·
		
 
		
	 
	
	
	- SCHED_FIFO
 
	- 
			·
			The “scheduling” thread attributes ·
	
 
	
	
	- SCHED_OTHER
 
	- 
			·
			The “scheduling” thread attributes ·
	
 
	
	
	- SCHED_RR
 
	- 
			·
			The “scheduling” thread attributes ·
	
 
	
	
	- the realtime clock
 
	- 
			·
			Rescheduling — hardware interrupts ·
	
 
	
	
	- thread creation
 
	- 
			·
			The thread attributes structure ·
	
 
	
	
	- timers
 
	- 
			·
			Rescheduling — hardware interrupts ·
	
 
	
 
- scheduling scope
 
- 
			·
			The “flags” thread attribute ·
 
- SchedYield()
 
- 
			·
			FIFO ·
 
- SEM
 
- 
			·
			The blocked states ·
 
- sem_post()
 
- 
			·
			Glossary ·
 
- sem_wait()
 
- 
			·
			Glossary ·
 
- semaphore
 
- 
	
	- defined
 
	- 
			·
			Glossary ·
	
 
	
	
	- in analogy
 
	- 
			·
			Semaphores ·
	
 
	
 
- send hierarchy
 
- 
	
	- avoiding deadlock
 
	- 
			·
			The send-hierarchy ·
	
 
	
	
	- breaking
 
	- 
			·
			The MsgDeliverEvent() function ·
			The send-hierarchy ·
		
		- implementation
 
		- 
			·
			The MsgDeliverEvent() function ·
		
 
		
		
		- with MsgDeliverEvent()
 
		- 
			·
			The MsgDeliverEvent() function ·
		
 
		
	 
	
	
	- defined
 
	- 
			·
			Glossary ·
	
 
	
	
	- designing
 
	- 
			·
			The send-hierarchy ·
	
 
	
	
	- struct sigevent
 
	- 
			·
			The MsgDeliverEvent() function ·
	
 
	
	
	- thread
 
	- 
			·
			The MsgDeliverEvent() function ·
	
 
	
 
- Send() (QNX 4)
 
- 
			·
			Client/server using the global namespace ·
			Message passing ·
 
- send-blocked
 
- 
			·
			Message passing and client/server ·
	
	- diagram
 
	- 
			·
			Message passing and client/server ·
	
 
	
 
- send-blocked state
 
- 
	
	- when abnormal
 
	- 
			·
			Message passing and client/server ·
	
 
	
	
	- when normal
 
	- 
			·
			Message passing and client/server ·
	
 
	
 
- send-driven model
 
- 
			·
			Server/subserver ·
	
	- example
 
	- 
			·
			Send-driven (client/server) ·
	
 
	
	
	- important subtlety
 
	- 
			·
			An important subtlety ·
	
 
	
 
- sending a message
 
- 
	
	- defined
 
	- 
			·
			Glossary ·
	
 
	
 
- server
 
- 
	
	- acting on unblock pulse
 
	- 
			·
			_NTO_CHF_UNBLOCK ·
	
 
	
	
	- assumptions about client data area
 
	- 
			·
			Reading and writing data ·
	
 
	
	
	- authentication of client
 
	- 
			·
			Who sent the message? ·
	
 
	
	
	- basic operation
 
	- 
			·
			Sending messages ·
	
 
	
	
	- being informed of client unblock
 
	- 
			·
			Kernel timeouts with message passing ·
	
 
	
	
	- binding of client
 
	- 
			·
			The receive ID (a.k.a. the client cookie) ·
	
 
	
	
	- boosting priority
 
	- 
			·
			Priority inheritance ·
	
 
	
	
	- busy
 
	- 
			·
			Message passing and client/server ·
	
 
	
	
	- channels
 
	- 
			·
			More about channels ·
	
 
	
	
	- class of service
 
	- 
			·
			Who sent the message? ·
	
 
	
	
	- client buffer size
 
	- 
			·
			Reading and writing data ·
	
 
	
	
	- client connecting to
 
	- 
		
		- diagram
 
		- 
			·
			Creating the channel ·
		
 
		
	 
	
	
	- client priority
 
	- 
			·
			Who sent the message? ·
	
 
	
	
	- clients with mismatched buffer sizes
 
	- 
			·
			Reading and writing data ·
	
 
	
	
	- creating a channel
 
	- 
			·
			Creating the channel ·
	
 
	
	
	- defined
 
	- 
			·
			Glossary ·
	
 
	
	
	- delivering event to client
 
	- 
			·
			The MsgDeliverEvent() function ·
	
 
	
	
	- endian flags
 
	- 
			·
			Who sent the message? ·
	
 
	
	
	- filesystem example
 
	- 
			·
			Reading and writing data ·
	
 
	
	
	- finding
 
	- 
			·
			Finding the server's ND/PID/CHID ·
		
		- by name
 
		- 
			·
			Finding the server's ND/PID/CHID ·
		
 
		
		
		- global variable
 
		- 
			·
			Finding the server's ND/PID/CHID ·
		
 
		
		
		- global variables
 
		- 
			·
			Finding the server's ND/PID/CHID ·
		
 
		
		
		- resource manager
 
		- 
			·
			Finding the server's ND/PID/CHID ·
		
 
		
		
		- well-known files
 
		- 
			·
			Finding the server's ND/PID/CHID ·
		
 
		
	 
	
	
	- finding out who sent message
 
	- 
			·
			Who sent the message? ·
	
 
	
	
	- framework
 
	- 
			·
			Server framework ·
	
 
	
	
	- general flow
 
	- 
			·
			The receive ID (a.k.a. the client cookie) ·
	
 
	
	
	- handling big messages
 
	- 
			·
			Reading and writing data ·
	
 
	
	
	- how to handle large transfers
 
	- 
			·
			Reading and writing data ·
	
 
	
	
	- ignoring unblock pulse
 
	- 
			·
			_NTO_CHF_UNBLOCK ·
	
 
	
	
	- limiting transfer size
 
	- 
			·
			Server framework ·
	
 
	
	
	- logging of client
 
	- 
			·
			Who sent the message? ·
	
 
	
	
	- mixing multithreaded and server/subserver
 
	- 
			·
			Server/subserver ·
	
 
	
	
	- multi-threaded
 
	- 
			·
			Multi-threaded server ·
	
 
	
	
	- multiple requests
 
	- 
			·
			Not replying to the client ·
	
 
	
	
	- network distributed
 
	- 
			·
			Server/subserver ·
	
 
	
	
	- node descriptor of client
 
	- 
			·
			Who sent the message? ·
	
 
	
	
	- not replying to client
 
	- 
			·
			Not replying to the client ·
			Notes ·
	
 
	
	
	- notifying client
 
	- 
			·
			The MsgDeliverEvent() function ·
	
 
	
	
	- periodic timers
 
	- 
			·
			A server with periodic pulses ·
	
 
	
	
	- phases of message passing
 
	- 
			·
			Message handling ·
	
 
	
	
	- receive ID
 
	- 
			·
			Message handling ·
	
 
	
	
	- reply blocked client
 
	- 
			·
			Message passing and client/server ·
	
 
	
	
	- replying to multiple clients
 
	- 
			·
			Notes ·
	
 
	
	
	- server connection ID
 
	- 
			·
			Who sent the message? ·
	
 
	
	
	- server/subserver
 
	- 
			·
			Server/subserver ·
		
		- delegation of work
 
		- 
			·
			Server/subserver ·
		
 
		
	 
	
	
	- SMP
 
	- 
			·
			Multi-threaded server ·
			Server/subserver ·
	
 
	
	
	- state transition
 
	- 
		
		- diagram
 
		- 
			·
			Message passing and client/server ·
		
 
		
	 
	
	
	- state transitions
 
	- 
			·
			Message passing and client/server ·
	
 
	
	
	- storing the struct sigevent
 
	- 
			·
			The MsgDeliverEvent() function ·
	
 
	
	
	- thread pool
 
	- 
			·
			Pools of threads ·
	
 
	
	
	- thread pools
 
	- 
			·
			Multiple threads ·
	
 
	
	
	- timeouts
 
	- 
			·
			Server-maintained timeouts ·
	
 
	
	
	- unblock pulse handling
 
	- 
			·
			_NTO_CHF_UNBLOCK ·
	
 
	
	
	- unblocked by client
 
	- 
			·
			Message handling ·
	
 
	
	
	- unblocking
 
	- 
		
		- client
 
		- 
			·
			Message handling ·
		
 
		
	 
	
	
	- using MsgInfo()
 
	- 
			·
			Who sent the message? ·
	
 
	
	
	- using MsgReceive()
 
	- 
			·
			Who sent the message? ·
	
 
	
	
	- using pulses for timeouts
 
	- 
			·
			Pulse notification ·
	
 
	
	
	- using signals for timeouts
 
	- 
			·
			Signal notification ·
	
 
	
	
	- verifying validity of event
 
	- 
			·
			The MsgDeliverEvent() function ·
	
 
	
	
	- writing a header later
 
	- 
			·
			Reading and writing data ·
	
 
	
 
- server/subserver
 
- 
			·
			Not replying to the client ·
	
	- analogy
 
	- 
			·
			Server/subserver ·
	
 
	
	
	- diagram
 
	- 
			·
			An important subtlety ·
	
 
	
	
	- example
 
	- 
			·
			Reply-driven (server/subserver) ·
	
 
	
	
	- implementation description
 
	- 
			·
			Reply-driven (server/subserver) ·
	
 
	
	
	- message passing
 
	- 
			·
			Multiple threads ·
	
 
	
 
- SETIOV() macro
 
- 
	
	- defined
 
	- 
			·
			Multipart messages ·
	
 
	
	
	- example
 
	- 
			·
			Multipart messages ·
	
 
	
 
- setting the time
 
- 
			·
			Getting and setting the realtime clock and more ·
 
- setuid()
 
- 
			·
			Now that you've attached an interrupt ·
 
- setupPulseAndTimer()
 
- 
			·
			main() ·
			setupPulseAndTimer() ·
 
- SH_COMPAT
 
- 
			·
			The iofunc_ocb_t OCB structure ·
 
- SH_DENYNO
 
- 
			·
			The iofunc_ocb_t OCB structure ·
 
- SH_DENYRD
 
- 
			·
			The iofunc_ocb_t OCB structure ·
 
- SH_DENYRW
 
- 
			·
			The iofunc_ocb_t OCB structure ·
 
- SH_DENYWR
 
- 
			·
			The iofunc_ocb_t OCB structure ·
 
- shared memory
 
- 
			·
			Multiple processes with shared memory ·
	
	- versus network
 
	- 
			·
			Comparisons ·
	
 
	
 
- sharing interrupts
 
- 
			·
			Level-sensitivity versus edge-sensitivity ·
	
	- diagram
 
	- 
			·
			Level-sensitivity versus edge-sensitivity ·
	
 
	
 
- SIGALRM
 
- 
			·
			Signal notification ·
			Timers delivering signals ·
 
- SIGEV_INTR
 
- 
			·
			General tricks for notification ·
			How to fill in the struct sigevent ·
			The trade-offs ·
			Using InterruptAttachEvent() ·
	
	- and interrupts
 
	- 
			·
			The trade-offs ·
			Using InterruptAttachEvent() ·
	
 
	
	
	- and InterruptWait()
 
	- 
			·
			Using InterruptAttachEvent() ·
	
 
	
	
	- and struct sigevent
 
	- 
			·
			How to fill in the struct sigevent ·
	
 
	
 
- SIGEV_INTR_INIT() (macro)
 
- 
			·
			General tricks for notification ·
 
- sigev_notify_function()
 
- 
			·
			Thread notification ·
 
- SIGEV_PULSE
 
- 
			·
			How to fill in the struct sigevent ·
			Pulse notification ·
			setupPulseAndTimer() ·
			Using InterruptAttachEvent() ·
	
	- and struct sigevent
 
	- 
			·
			How to fill in the struct sigevent ·
			setupPulseAndTimer() ·
	
 
	
 
- SIGEV_PULSE_INIT()
 
- 
			·
			setupPulseAndTimer() ·
 
- SIGEV_PULSE_INIT() (macro)
 
- 
			·
			General tricks for notification ·
	
	- example
 
	- 
			·
			setupPulseAndTimer() ·
	
 
	
 
- SIGEV_PULSE_PRIO_INHERIT
 
- 
			·
			General tricks for notification ·
			setupPulseAndTimer() ·
 
- SIGEV_SIGNAL
 
- 
			·
			General tricks for notification ·
			How to fill in the struct sigevent ·
			Signal notification ·
			Using InterruptAttachEvent() ·
	
	- and interrupts
 
	- 
			·
			Using InterruptAttachEvent() ·
	
 
	
	
	- and struct sigevent
 
	- 
			·
			How to fill in the struct sigevent ·
			Signal notification ·
	
 
	
 
- SIGEV_SIGNAL family
 
- 
			·
			How to fill in the struct sigevent ·
 
- SIGEV_SIGNAL_CODE
 
- 
			·
			General tricks for notification ·
			How to fill in the struct sigevent ·
			Signal notification ·
	
	- and struct sigevent
 
	- 
			·
			How to fill in the struct sigevent ·
			Signal notification ·
	
 
	
 
- SIGEV_SIGNAL_CODE_INIT() (macro)
 
- 
			·
			General tricks for notification ·
 
- SIGEV_SIGNAL_INIT() (macro)
 
- 
			·
			General tricks for notification ·
 
- SIGEV_SIGNAL_PULSE
 
- 
			·
			General tricks for notification ·
 
- SIGEV_SIGNAL_THREAD
 
- 
			·
			General tricks for notification ·
			How to fill in the struct sigevent ·
			Signal notification ·
	
	- and struct sigevent
 
	- 
			·
			How to fill in the struct sigevent ·
			Signal notification ·
	
 
	
 
- SIGEV_SIGNAL_THREAD_INIT() (macro)
 
- 
			·
			General tricks for notification ·
 
- SIGEV_THREAD
 
- 
			·
			How to fill in the struct sigevent ·
			Thread notification ·
			Using InterruptAttachEvent() ·
	
	- and interrupts
 
	- 
			·
			Using InterruptAttachEvent() ·
	
 
	
	
	- and struct sigevent
 
	- 
			·
			How to fill in the struct sigevent ·
	
 
	
 
- SIGEV_THREAD_INIT() (macro)
 
- 
			·
			General tricks for notification ·
	
	- example
 
	- 
			·
			Timers creating threads ·
	
 
	
 
- SIGEV_UNBLOCK
 
- 
			·
			General tricks for notification ·
			How to fill in the struct sigevent ·
			Kernel timeouts ·
			Kernel timeouts with pthread_join() ·
	
	- and struct sigevent
 
	- 
			·
			How to fill in the struct sigevent ·
			Kernel timeouts ·
	
 
	
	
	- example
 
	- 
			·
			Kernel timeouts with pthread_join() ·
	
 
	
 
- SIGEV_UNBLOCK_INIT() (macro)
 
- 
			·
			General tricks for notification ·
			Kernel timeouts with pthread_join() ·
	
	- example
 
	- 
			·
			Kernel timeouts with pthread_join() ·
	
 
	
 
- signal
 
- 
	
	- defined
 
	- 
			·
			Glossary ·
	
 
	
	
	- floating-point operations aren't safe to use in handlers
 
	- 
			·
			Signal notification ·
	
 
	
	
	- SIGALRM
 
	- 
			·
			Timers delivering signals ·
	
 
	
	
	- SIGUSR1
 
	- 
			·
			Timers delivering signals ·
	
 
	
	
	- struct sigevent
 
	- 
			·
			Summary ·
	
 
	
	
	- timers
 
	- 
			·
			Notification schemes ·
			Timers delivering signals ·
	
 
	
	
	- versus pulses
 
	- 
			·
			Signal notification ·
	
 
	
 
- SIGSEGV
 
- 
			·
			The “stack” thread attributes ·
 
- SIGUSR1
 
- 
			·
			Timers delivering signals ·
 
- sigwait()
 
- 
			·
			Signal notification ·
 
- sleep()
 
- 
			·
			Kernel states, the complete list ·
			Operating periodically ·
			Other clock sources ·
			Rescheduling — kernel calls ·
	
	- bad implementation
 
	- 
			·
			Operating periodically ·
	
 
	
 
- sleepon locks
 
- 
		See
		synchronization 
 
- slowing down time
 
- 
			·
			Getting and setting ·
 
- SMP
 
- 
			·
			A small microkernel and message passing ·
			Multiple CPU (SMP) ·
	
	- application
 
	- 
			·
			Multiple threads on a single CPU ·
	
 
	
	
	- atomic operations
 
	- 
			·
			Things to watch out for when using SMP ·
	
 
	
	
	- coding for SMP or single processor
 
	- 
			·
			Coding for SMP or single processor ·
	
 
	
	
	- concurrency
 
	- 
			·
			Things to watch out for when using SMP ·
	
 
	
	
	- condvars
 
	- 
			·
			Sleepons versus condvars ·
	
 
	
	
	- constraints
 
	- 
			·
			Multiple threads on a single CPU ·
	
 
	
	
	- creating enough threads
 
	- 
			·
			Threads in mathematical operations ·
	
 
	
	
	- in a networked system
 
	- 
			·
			Multiple threads ·
	
 
	
	
	- interrupts
 
	- 
			·
			ISR functions ·
			Things to watch out for when using SMP ·
	
 
	
	
	- message passing
 
	- 
			·
			Multiple threads ·
	
 
	
	
	- multiple threads
 
	- 
			·
			Multiple threads on a single CPU ·
	
 
	
	
	- scalability
 
	- 
			·
			Multi-threaded server ·
	
 
	
	
	- soaker thread
 
	- 
			·
			Multiple threads on a single CPU ·
	
 
	
	
	- STATE_RUNNING
 
	- 
			·
			RUNNING ·
	
 
	
	
	- thread pools
 
	- 
			·
			Multiple threads ·
	
 
	
	
	- threads
 
	- 
			·
			Threads in mathematical operations ·
	
 
	
	
	- timing
 
	- 
		
		- diagram
 
		- 
			·
			Multiple threads on a single CPU ·
		
 
		
	 
	
	
	- tips
 
	- 
			·
			Things to watch out for when using SMP ·
	
 
	
	
	- underutilization
 
	- 
			·
			Multiple threads on a single CPU ·
	
 
	
	
	- utilization
 
	- 
			·
			Multiple threads on a single CPU ·
	
 
	
 
- soaker thread
 
- 
			·
			Multiple threads on a single CPU ·
 
- spawn()
 
- 
			·
			Starting a process with the exec() and spawn() calls ·
			Starting a process with the fork() call ·
 
- spawn() family
 
- 
			·
			So what should you use? ·
			Starting a process from within a program ·
			Starting a process with the exec() and spawn() calls ·
 
- SPAWN_NOZOMBIE
 
- 
			·
			Starting a process with the exec() and spawn() calls ·
 
- spawnl()
 
- 
			·
			Starting a process with the exec() and spawn() calls ·
 
- spawnle()
 
- 
			·
			Starting a process with the exec() and spawn() calls ·
 
- spawnlp()
 
- 
			·
			Starting a process with the exec() and spawn() calls ·
 
- spawnlpe()
 
- 
			·
			Starting a process with the exec() and spawn() calls ·
 
- spawnp()
 
- 
			·
			Starting a process with the exec() and spawn() calls ·
 
- spawnv()
 
- 
			·
			Starting a process with the exec() and spawn() calls ·
 
- spawnve()
 
- 
			·
			Starting a process with the exec() and spawn() calls ·
 
- spawnvp()
 
- 
			·
			Starting a process with the exec() and spawn() calls ·
 
- spawnvpe()
 
- 
			·
			Starting a process with the exec() and spawn() calls ·
 
- speeding time up
 
- 
			·
			Getting and setting ·
 
- stack
 
- 
	
	- for thread
 
	- 
			·
			The thread attributes structure ·
	
 
	
	
	- postmortem analysis
 
	- 
			·
			The “stack” thread attributes ·
	
 
	
 
- stat()
 
- 
			·
			The library really does what we just talked about ·
			The resource manager library ·
 
- STATE_CONDVAR
 
- 
			·
			Condition variables ·
			Kernel states, the complete list ·
 
- STATE_DEAD
 
- 
			·
			Kernel states, the complete list ·
 
- STATE_INTR
 
- 
			·
			Kernel states, the complete list ·
 
- STATE_JOIN
 
- 
			·
			Kernel states, the complete list ·
 
- STATE_MUTEX
 
- 
			·
			Kernel states, the complete list ·
			The blocked states ·
 
- STATE_NANOSLEEP
 
- 
			·
			Kernel states, the complete list ·
 
- STATE_NET_REPLY
 
- 
			·
			Kernel states, the complete list ·
 
- STATE_NET_SEND
 
- 
			·
			Kernel states, the complete list ·
 
- STATE_READY
 
- 
			·
			Attaching with InterruptAttachEvent() ·
			InterruptAttach() versus InterruptAttachEvent() ·
			Kernel states, the complete list ·
			Message passing and client/server ·
			Neutrino and interrupts ·
			Notification schemes ·
			Operating periodically ·
			Priority inheritance ·
			Rescheduling — hardware interrupts ·
			Rescheduling — kernel calls ·
			The blocked states ·
			Timing jitter ·
 
- STATE_READY state
 
- 
			·
			Message passing and client/server ·
 
- STATE_RECEIVE
 
- 
			·
			Kernel states, the complete list ·
 
- STATE_RECV
 
- 
			·
			Message passing and client/server ·
			Pulse notification ·
			So what's the trick? ·
 
- STATE_RECV state
 
- 
	
	- diagram
 
	- 
			·
			Message passing and client/server ·
	
 
	
 
- STATE_REPLY
 
- 
			·
			Kernel states, the complete list ·
			Kernel timeouts with message passing ·
			Notes ·
			_NTO_CHF_UNBLOCK ·
 
- STATE_REPLY state
 
- 
			·
			Message passing and client/server ·
	
	- diagram
 
	- 
			·
			Message passing and client/server ·
	
 
	
 
- STATE_RUNNING
 
- 
			·
			Kernel states, the complete list ·
			Neutrino and interrupts ·
 
- STATE_SEM
 
- 
			·
			Kernel states, the complete list ·
			The blocked states ·
 
- STATE_SEND
 
- 
			·
			Kernel states, the complete list ·
			Kernel timeouts with message passing ·
			_NTO_CHF_UNBLOCK ·
			The MsgReceivePulse() function ·
 
- STATE_SEND state
 
- 
			·
			Message passing and client/server ·
	
	- diagram
 
	- 
			·
			Message passing and client/server ·
	
 
	
 
- STATE_SIGSUSPEND
 
- 
			·
			Kernel states, the complete list ·
 
- STATE_SIGWAITINFO
 
- 
			·
			Kernel states, the complete list ·
 
- STATE_STACK
 
- 
			·
			Kernel states, the complete list ·
 
- STATE_STOPPED
 
- 
			·
			Kernel states, the complete list ·
 
- STATE_WAITCTX
 
- 
			·
			Kernel states, the complete list ·
 
- STATE_WAITPAGE
 
- 
			·
			Kernel states, the complete list ·
 
- STATE_WAITTHREAD
 
- 
			·
			Kernel states, the complete list ·
 
- strcmp()
 
- 
			·
			ISR functions ·
 
- strdup()
 
- 
			·
			ISR functions ·
 
- strftime()
 
- 
			·
			What kind of timer? ·
 
- struct _clockadjust
 
- 
			·
			Getting and setting ·
 
- struct _clockperiod
 
- 
			·
			Adjusting the timebase ·
	
	- members
 
	- 
			·
			Adjusting the timebase ·
	
 
	
 
- struct _io_chmod
 
- 
			·
			io_chmod() ·
 
- struct _io_chown
 
- 
			·
			io_chown() ·
 
- struct _io_close
 
- 
			·
			io_close_dup() ·
			io_close_ocb() ·
 
- struct _io_connect
 
- 
			·
			Connect functions notes ·
			End-user parameter part ·
			Internal use part ·
			io_link() ·
			io_mknod() ·
			io_mount() ·
			io_open() ·
			io_readlink() ·
			io_rename() ·
			io_unlink() ·
 
- struct _io_connect_link_reply
 
- 
			·
			io_link() ·
			io_mknod() ·
			io_mount() ·
			io_open() ·
			io_readlink() ·
			io_rename() ·
			io_unlink() ·
 
- struct _io_devctl
 
- 
			·
			io_devctl() ·
 
- struct _io_devctl_reply
 
- 
			·
			io_devctl() ·
 
- struct _io_dup
 
- 
			·
			io_dup() ·
 
- struct _io_lock
 
- 
			·
			io_lock() ·
 
- struct _io_lock_reply
 
- 
			·
			io_lock() ·
 
- struct _io_lseek
 
- 
			·
			io_lseek() ·
 
- struct _io_mmap
 
- 
			·
			io_mmap() ·
 
- struct _io_mmap_reply
 
- 
			·
			io_mmap() ·
 
- struct _io_msg
 
- 
			·
			io_msg() ·
 
- struct _io_notify
 
- 
			·
			io_notify() ·
 
- struct _io_notify_reply
 
- 
			·
			io_notify() ·
 
- struct _io_openfd
 
- 
			·
			io_openfd() ·
 
- struct _io_pathconf
 
- 
			·
			io_pathconf() ·
 
- struct _io_read
 
- 
			·
			io_read() ·
 
- struct _io_space
 
- 
			·
			io_space() ·
 
- struct _io_stat
 
- 
			·
			io_stat() ·
 
- struct _io_sync
 
- 
			·
			io_sync() ·
 
- struct _io_utime
 
- 
			·
			io_utime() ·
 
- struct _io_write
 
- 
			·
			io_write() ·
 
- struct _msg_info
 
- 
			·
			Impact on MsgReceive() ·
			Using the _NTO_MI_UNBLOCK_REQ ·
			Who sent the message? ·
	
	- declaration
 
	- 
			·
			Some notes on NDs ·
	
 
	
	
	- fields in
 
	- 
			·
			Who sent the message? ·
	
 
	
	
	- flags
 
	- 
			·
			Impact on MsgReceive() ·
	
 
	
	
	- node descriptors
 
	- 
			·
			Some notes on NDs ·
	
 
	
 
- struct _pulse
 
- 
			·
			What's in a pulse? ·
	
	- declaration
 
	- 
			·
			What's in a pulse? ·
	
 
	
 
- struct _thread_pool_attr
 
- 
	
	- defined
 
	- 
			·
			Pools of threads ·
	
 
	
	
	- members
 
	- 
			·
			The thread pool functions ·
	
 
	
 
- struct dirent
 
- 
			·
			io_read() ·
			The struct dirent structure and friends ·
 
- struct itimerspec
 
- 
			·
			What kind of timer? ·
	
	- defined
 
	- 
			·
			What kind of timer? ·
	
 
	
	
	- example
 
	- 
			·
			setupPulseAndTimer() ·
	
 
	
	
	- example of filling
 
	- 
			·
			What kind of timer? ·
	
 
	
	
	- it_interval member
 
	- 
			·
			What kind of timer? ·
	
 
	
	
	- it_value member
 
	- 
			·
			What kind of timer? ·
	
 
	
 
- struct sigevent
 
- 
			·
			Attaching with InterruptAttach() ·
			Attaching with InterruptAttachEvent() ·
			Glossary ·
			How to fill in the struct sigevent ·
			Interrupt service routines ·
			InterruptAttach() versus InterruptAttachEvent() ·
			Kernel timeouts ·
			Kernel timeouts with pthread_join() ·
			Proxies ·
			Pulses and events ·
			Signal, pulse, or thread? ·
			Summary ·
			Telling a thread to do something ·
			The MsgDeliverEvent() function ·
			Timers creating threads ·
			Timers delivering signals ·
			Using InterruptAttach() ·
			Using InterruptAttachEvent() ·
			Using timers ·
	
	- anonymous union
 
	- 
			·
			How to fill in the struct sigevent ·
	
 
	
	
	- creating threads
 
	- 
			·
			Timers creating threads ·
	
 
	
	
	- defined
 
	- 
			·
			How to fill in the struct sigevent ·
	
 
	
	
	- example
 
	- 
			·
			Kernel timeouts with pthread_join() ·
			setupPulseAndTimer() ·
	
 
	
	
	- how to initialize
 
	- 
			·
			How to fill in the struct sigevent ·
	
 
	
	
	- interrupts
 
	- 
			·
			Attaching with InterruptAttach() ·
			Attaching with InterruptAttachEvent() ·
			Using InterruptAttach() ·
			Using InterruptAttachEvent() ·
	
 
	
	
	- macros for filling
 
	- 
			·
			General tricks for notification ·
	
 
	
	
	- persistency
 
	- 
			·
			Telling a thread to do something ·
	
 
	
	
	- pulse
 
	- 
			·
			Summary ·
	
 
	
	
	- pulses
 
	- 
			·
			setupPulseAndTimer() ·
	
 
	
	
	- send hierarchy
 
	- 
			·
			The MsgDeliverEvent() function ·
	
 
	
	
	- shortcut initialization
 
	- 
			·
			Kernel timeouts with pthread_join() ·
	
 
	
	
	- sigev_code member
 
	- 
			·
			Pulse notification ·
			Signal notification ·
	
 
	
	
	- sigev_coid member
 
	- 
			·
			Pulse notification ·
	
 
	
	
	- SIGEV_INTR
 
	- 
			·
			How to fill in the struct sigevent ·
	
 
	
	
	- sigev_notify member
 
	- 
			·
			How to fill in the struct sigevent ·
			Signal notification ·
	
 
	
	
	- sigev_notify_attributes member
 
	- 
			·
			Thread notification ·
	
 
	
	
	- sigev_notify_function member
 
	- 
			·
			Thread notification ·
	
 
	
	
	- sigev_priority member
 
	- 
			·
			Pulse notification ·
	
 
	
	
	- SIGEV_PULSE
 
	- 
			·
			How to fill in the struct sigevent ·
			setupPulseAndTimer() ·
	
 
	
	
	- SIGEV_SIGNAL
 
	- 
			·
			How to fill in the struct sigevent ·
			Signal notification ·
	
 
	
	
	- SIGEV_SIGNAL_CODE
 
	- 
			·
			How to fill in the struct sigevent ·
			Signal notification ·
	
 
	
	
	- SIGEV_SIGNAL_THREAD
 
	- 
			·
			How to fill in the struct sigevent ·
			Signal notification ·
	
 
	
	
	- sigev_signo
 
	- 
		
		- and pulses
 
		- 
			·
			setupPulseAndTimer() ·
		
 
		
	 
	
	
	- sigev_signo member
 
	- 
			·
			Signal notification ·
	
 
	
	
	- SIGEV_THREAD
 
	- 
			·
			How to fill in the struct sigevent ·
	
 
	
	
	- SIGEV_UNBLOCK
 
	- 
			·
			How to fill in the struct sigevent ·
			Kernel timeouts ·
	
 
	
	
	- sigev_value member
 
	- 
			·
			Pulse notification ·
			Thread notification ·
	
 
	
	
	- signal
 
	- 
			·
			Summary ·
	
 
	
	
	- timers
 
	- 
			·
			How to fill in the struct sigevent ·
	
 
	
 
- struct timespec
 
- 
			·
			What kind of timer? ·
	
	- defined
 
	- 
			·
			What kind of timer? ·
	
 
	
 
- structures
 
- 
	
	- attribute
 
	- 
		
		- defined
 
		- 
			·
			Glossary ·
		
 
		
	 
	
	
	- FILE
 
	- 
			·
			Characteristics of resource managers ·
			Client summary ·
	
 
	
	
	- iov_t
 
	- 
			·
			Multipart messages ·
	
 
	
	
	- pthread_attr_t
 
	- 
			·
			The thread attributes structure ·
	
 
	
	
	- pthread_cond_t
 
	- 
			·
			Condition variables ·
	
 
	
	
	- pthread_rwlock_t
 
	- 
			·
			Readers/writer locks ·
	
 
	
	
	- pthread_t
 
	- 
			·
			Joining ·
			Starting a thread ·
	
 
	
	
	- resmgr_attr_t
 
	- 
			·
			Data structures ·
			resmgr_attr_t control structure ·
			The resmgr_context_t internal context block ·
	
 
	
	
	- resmgr_connect_funcs_t
 
	- 
			·
			Data structures ·
			resmgr_connect_funcs_t connect table ·
	
 
	
	
	- resmgr_context_t
 
	- 
			·
			Data structures ·
			resmgr_connect_funcs_t connect table ·
			resmgr_io_funcs_t I/O table ·
			The data structure sizing parameters ·
			The resmgr_context_t internal context block ·
	
 
	
	
	- RESMGR_HANDLE_T
 
	- 
			·
			resmgr_connect_funcs_t connect table ·
	
 
	
	
	- resmgr_io_funcs_t
 
	- 
			·
			Data structures ·
			resmgr_connect_funcs_t connect table ·
			resmgr_io_funcs_t I/O table ·
	
 
	
	
	- RESMGR_OCB_T
 
	- 
			·
			resmgr_io_funcs_t I/O table ·
	
 
	
	
	- resource manager
 
	- 
		
		- io_chmod_t
 
		- 
			·
			io_chmod() ·
		
 
		
		
		- io_chown_t
 
		- 
			·
			io_chown() ·
		
 
		
		
		- io_close_t
 
		- 
			·
			io_close_dup() ·
			io_close_ocb() ·
		
 
		
		
		- io_devctl_t
 
		- 
			·
			io_devctl() ·
		
 
		
		
		- io_dup_t
 
		- 
			·
			io_dup() ·
		
 
		
		
		- io_link_extra_t
 
		- 
			·
			io_link() ·
		
 
		
		
		- io_link_t
 
		- 
			·
			io_link() ·
		
 
		
		
		- io_lock_t
 
		- 
			·
			io_lock() ·
		
 
		
		
		- io_lseek_t
 
		- 
			·
			io_lseek() ·
		
 
		
		
		- io_mknod_t
 
		- 
			·
			io_mknod() ·
		
 
		
		
		- io_mmap_t
 
		- 
			·
			io_mmap() ·
		
 
		
		
		- io_mount_t
 
		- 
			·
			io_mount() ·
		
 
		
		
		- io_msg_t
 
		- 
			·
			io_msg() ·
		
 
		
		
		- io_notify_t
 
		- 
			·
			io_notify() ·
		
 
		
		
		- io_open_t
 
		- 
			·
			io_open() ·
			io_readlink() ·
		
 
		
		
		- io_openfd_t
 
		- 
			·
			io_openfd() ·
		
 
		
		
		- io_pathconf_t
 
		- 
			·
			io_pathconf() ·
		
 
		
		
		- io_read_t
 
		- 
			·
			io_read() ·
		
 
		
		
		- io_rename_extra_t
 
		- 
			·
			io_rename() ·
		
 
		
		
		- io_rename_t
 
		- 
			·
			io_rename() ·
		
 
		
		
		- io_space_t
 
		- 
			·
			io_space() ·
		
 
		
		
		- io_stat_t
 
		- 
			·
			io_stat() ·
		
 
		
		
		- io_sync_t
 
		- 
			·
			io_sync() ·
		
 
		
		
		- io_unlink_t
 
		- 
			·
			io_unlink() ·
		
 
		
		
		- io_utime_t
 
		- 
			·
			io_utime() ·
		
 
		
		
		- io_write_t
 
		- 
			·
			io_write() ·
		
 
		
		
		- iofunc_attr_t
 
		- 
			·
			POSIX-layer data structures ·
			The iofunc_attr_t attributes structure ·
		
 
		
		
		- iofunc_mount_t
 
		- 
			·
			POSIX-layer data structures ·
			The iofunc_attr_t attributes structure ·
			The iofunc_mount_t mount structure ·
		
 
		
		
		- iofunc_ocb_t
 
		- 
			·
			POSIX-layer data structures ·
			The iofunc_ocb_t OCB structure ·
			The strange case of the offset member ·
		
 
		
		
		- resmgr_context_t
 
		- 
			·
			General notes ·
		
 
		
		
		- struct _io_chmod
 
		- 
			·
			io_chmod() ·
		
 
		
		
		- struct _io_chown
 
		- 
			·
			io_chown() ·
		
 
		
		
		- struct _io_close
 
		- 
			·
			io_close_dup() ·
			io_close_ocb() ·
		
 
		
		
		- struct _io_connect
 
		- 
			·
			Connect functions notes ·
			End-user parameter part ·
			Internal use part ·
			io_link() ·
			io_mknod() ·
			io_mount() ·
			io_open() ·
			io_readlink() ·
			io_rename() ·
			io_unlink() ·
		
 
		
		
		- struct _io_connect_link_reply
 
		- 
			·
			io_link() ·
			io_mknod() ·
			io_mount() ·
			io_open() ·
			io_readlink() ·
			io_rename() ·
			io_unlink() ·
		
 
		
		
		- struct _io_devctl
 
		- 
			·
			io_devctl() ·
		
 
		
		
		- struct _io_devctl_reply
 
		- 
			·
			io_devctl() ·
		
 
		
		
		- struct _io_dup
 
		- 
			·
			io_dup() ·
		
 
		
		
		- struct _io_lock
 
		- 
			·
			io_lock() ·
		
 
		
		
		- struct _io_lock_reply
 
		- 
			·
			io_lock() ·
		
 
		
		
		- struct _io_lseek
 
		- 
			·
			io_lseek() ·
		
 
		
		
		- struct _io_mmap
 
		- 
			·
			io_mmap() ·
		
 
		
		
		- struct _io_mmap_reply
 
		- 
			·
			io_mmap() ·
		
 
		
		
		- struct _io_msg
 
		- 
			·
			io_msg() ·
		
 
		
		
		- struct _io_notify
 
		- 
			·
			io_notify() ·
		
 
		
		
		- struct _io_notify_reply
 
		- 
			·
			io_notify() ·
		
 
		
		
		- struct _io_openfd
 
		- 
			·
			io_openfd() ·
		
 
		
		
		- struct _io_pathconf
 
		- 
			·
			io_pathconf() ·
		
 
		
		
		- struct _io_read
 
		- 
			·
			io_read() ·
		
 
		
		
		- struct _io_space
 
		- 
			·
			io_space() ·
		
 
		
		
		- struct _io_stat
 
		- 
			·
			io_stat() ·
		
 
		
		
		- struct _io_sync
 
		- 
			·
			io_sync() ·
		
 
		
		
		- struct _io_utime
 
		- 
			·
			io_utime() ·
		
 
		
		
		- struct _io_write
 
		- 
			·
			io_write() ·
		
 
		
		
		- struct dirent
 
		- 
			·
			io_read() ·
			The struct dirent structure and friends ·
		
 
		
	 
	
	
	- struct _msg_info
 
	- 
			·
			Channel flags ·
			Impact on MsgReceive() ·
			Some notes on NDs ·
			Using the _NTO_MI_UNBLOCK_REQ ·
			Who sent the message? ·
		
		- chid
 
		- 
			·
			Who sent the message? ·
		
 
		
		
		- coid
 
		- 
			·
			Who sent the message? ·
		
 
		
		
		- dstmsglen
 
		- 
			·
			Channel flags ·
		
 
		
		
		- flags
 
		- 
			·
			Who sent the message? ·
		
 
		
		
		- msglen
 
		- 
			·
			Who sent the message? ·
		
 
		
		
		- nd
 
		- 
			·
			Who sent the message? ·
		
 
		
		
		- pid
 
		- 
			·
			Who sent the message? ·
		
 
		
		
		- priority
 
		- 
			·
			Who sent the message? ·
		
 
		
		
		- scoid
 
		- 
			·
			Who sent the message? ·
		
 
		
		
		- srcmsglen
 
		- 
			·
			Channel flags ·
			Who sent the message? ·
		
 
		
		
		- srcnd
 
		- 
			·
			Who sent the message? ·
		
 
		
		
		- tid
 
		- 
			·
			Who sent the message? ·
		
 
		
	 
	
	
	- struct _pulse
 
	- 
			·
			What's in a pulse? ·
	
 
	
	
	- struct itimerspec
 
	- 
			·
			What kind of timer? ·
		
		- it_interval member
 
		- 
			·
			What kind of timer? ·
		
 
		
		
		- it_value member
 
		- 
			·
			What kind of timer? ·
		
 
		
	 
	
	
	- struct sigevent
 
	- 
			·
			Attaching with InterruptAttach() ·
			Attaching with InterruptAttachEvent() ·
			Glossary ·
			How to fill in the struct sigevent ·
			Interrupt service routines ·
			InterruptAttach() versus InterruptAttachEvent() ·
			Kernel timeouts with pthread_join() ·
			Proxies ·
			Pulses and events ·
			Signal, pulse, or thread? ·
			Summary ·
			Telling a thread to do something ·
			Timers creating threads ·
			Timers delivering signals ·
			Using InterruptAttach() ·
			Using InterruptAttachEvent() ·
			Using timers ·
	
 
	
	
	- struct timespec
 
	- 
			·
			What kind of timer? ·
	
 
	
	
	- thread_pool_attr_t
 
	- 
			·
			Pools of threads ·
	
 
	
	
	- union sigval
 
	- 
			·
			What's in a pulse? ·
	
 
	
 
- sub-second timers
 
- 
			·
			What kind of timer? ·
 
- support, technical
 
- 
			·
			Technical support ·
 
- synchronization
 
- 
	
	- association of mutex and condvar
 
	- 
			·
			Sleepons versus condvars ·
	
 
	
	
	- barrier
 
	- 
			·
			Summary ·
		
		- defined
 
		- 
			·
			Glossary ·
		
 
		
	 
	
	
	- condition variable
 
	- 
			·
			Condition variables ·
			More on synchronization ·
		
		- defined
 
		- 
			·
			Glossary ·
		
 
		
	 
	
	
	- condvar
 
	- 
			·
			Summary ·
		
		- versus sleepon
 
		- 
			·
			Condition variables ·
		
 
		
	 
	
	
	- condvar versus sleepon
 
	- 
			·
			Sleepons versus condvars ·
	
 
	
	
	- deadlock
 
	- 
		
		- defined
 
		- 
			·
			Glossary ·
		
 
		
	 
	
	
	- joining
 
	- 
			·
			Summary ·
	
 
	
	
	- mutex
 
	- 
			·
			Summary ·
		
		- across process boundaries
 
		- 
			·
			Additional Neutrino services ·
		
 
		
		
		- defined
 
		- 
			·
			Glossary ·
		
 
		
	 
	
	
	- reader/writer lock
 
	- 
			·
			More on synchronization ·
			Readers/writer locks ·
	
 
	
	
	- rendezvous
 
	- 
			·
			Using a barrier ·
	
 
	
	
	- semaphore
 
	- 
			·
			Summary ·
		
		- defined
 
		- 
			·
			Glossary ·
		
 
		
	 
	
	
	- signal versus broadcast
 
	- 
			·
			Signal versus broadcast ·
	
 
	
	
	- sleepon
 
	- 
		
		- versus condvar
 
		- 
			·
			Condition variables ·
		
 
		
	 
	
	
	- sleepon lock
 
	- 
			·
			More on synchronization ·
			Sleepon locks ·
			Summary ·
	
 
	
	
	- sleepon versus condvar
 
	- 
			·
			Sleepons versus condvars ·
	
 
	
	
	- to termination of thread
 
	- 
			·
			Joining ·
			Synchronizing to the termination of a thread ·
	
 
	
	
	- using a barrier
 
	- 
			·
			Using a barrier ·
	
 
	
 
- synchronizing time of day
 
- 
			·
			Getting and setting ·
 
- synchronous
 
- 
	
	- defined
 
	- 
			·
			Glossary ·
	
 
	
		
		See also
		asynchronous 
		
 
- sysconf()
 
- 
			·
			The “stack” thread attributes ·
 
- system
 
- 
	
	- as consisting of processes and threads
 
	- 
			·
			Threads and processes ·
	
 
	
 
- system()
 
- 
			·
			Starting a process from within a program ·
			Starting a process with the system() call ·
 
 · ! · 0 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z ·