Information for kernel callouts
		
			
			
			
			The 
callout area is CPU-independent. It is defined by the
					
callout_entry data structure, which includes the following members:
			
				
					- reboot
 
					- A pointer to the reboot callout function. This callout function is invoked in two scenarios:
						
							- A normal termination, which is done based on a user request
								(e.g., through sysmgr_reboot()) and is therefore expected
 
							- An abnormal termination, which is done to recover from an unexpected system failure
								and is therefore unexpected. Reasons for an abnormal termination include: 
									- the kernel detects internal inconsistencies
 
									- the kernel runs out of memory doing work that is guaranteed to succeed
 
									- a critical process terminates
 
								
 
						
						Note: If the behavior of the system cannot be guaranteed to meet all requirements, the safest course of action is
							to return system control to the startup program so that it can, in a board-specific way, put the system into
							a known good state (e.g., by rebooting).
						For more details and a code sample, see System reboot.
					 
				
				
					- power
 
					- Deprecated. This field is set to NULL.
 
				
				
					- timer_load
 
					- A pointer to a callout that sets the period for the system tick timer and enables it.
						The callout is called first during procnto initialization to make
						the timer start generating system ticks. It is also called when the system tick period
						is changed (via ClockPeriod()), when entering or leaving tickless
						operations, and by high-resolution software timers.
						
For details on what exactly this function does, see the
							timer_load() description in Timer and clock.
					 
				
				
					- timer_reload
 
					- A pointer to a callout used to manually reload the timer with the same period for the
						next fire. If a new period needs to be set, timer_load() will be used 
						instead.
						
For more information, see the
							timer_reload() description in Timer and clock.
					 
				
				
					- timer_value
 
					- A pointer to a callout that is used to determine when the next interrupt is expected.
						It's a count-up value from 0 (since the last interrupt) to the current time,
						to tell how far the timer has gone.
						
For examples of using this callout, see the
							timer_value() description in Timer and clock.
					 
				
				
					- debug
 
					- This field is an array that has two entries:
						
							- debug[0] — used for informational purposes
 
							- debug[1] — currently unused; set this field to NULL
 
						
						Only the first entry is discussed in this guide. This entry points to a callout that prints out internal debugging
							information to a device. For information about the specific types of kernel debug callouts, see the
							Kernel debug entry in the Kernel Callouts chapter.
					 
				
				
					- debug_watchdog
 
					- Not used. This field is set to NULL.
 
				
				
					- custom
 
					- This field must be either: 
						- NULL, indicating that no custom kernel call callout is provided
 
						- non-NULL, and pointing to valid code provided by the startup program, indicating that
							a custom kernel call callout is provided. For information about the signature and a code sample for a custom callout,
							see the Custom entry in the Kernel Callouts chapter.
 
						
 
				
			
 
			The callout_entry structure includes different versions of all
				these fields for 32-bit and 64-bit systems.