| 
									
										
										
										
											2012-07-16 10:42:36 +00:00
										 |  |  | #ifndef _LINUX_SMPBOOT_H
 | 
					
						
							|  |  |  | #define _LINUX_SMPBOOT_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <linux/types.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct task_struct; | 
					
						
							|  |  |  | /* Cookie handed to the thread_fn*/ | 
					
						
							|  |  |  | struct smpboot_thread_data; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * struct smp_hotplug_thread - CPU hotplug related thread descriptor | 
					
						
							|  |  |  |  * @store:		Pointer to per cpu storage for the task pointers | 
					
						
							|  |  |  |  * @list:		List head for core management | 
					
						
							|  |  |  |  * @thread_should_run:	Check whether the thread should run or not. Called with | 
					
						
							|  |  |  |  *			preemption disabled. | 
					
						
							|  |  |  |  * @thread_fn:		The associated thread function | 
					
						
							| 
									
										
										
										
											2013-01-31 12:11:12 +00:00
										 |  |  |  * @create:		Optional setup function, called when the thread gets | 
					
						
							|  |  |  |  *			created (Not called from the thread context) | 
					
						
							| 
									
										
										
										
											2012-07-16 10:42:36 +00:00
										 |  |  |  * @setup:		Optional setup function, called when the thread gets | 
					
						
							|  |  |  |  *			operational the first time | 
					
						
							|  |  |  |  * @cleanup:		Optional cleanup function, called when the thread | 
					
						
							|  |  |  |  *			should stop (module exit) | 
					
						
							|  |  |  |  * @park:		Optional park function, called when the thread is | 
					
						
							|  |  |  |  *			parked (cpu offline) | 
					
						
							|  |  |  |  * @unpark:		Optional unpark function, called when the thread is | 
					
						
							|  |  |  |  *			unparked (cpu online) | 
					
						
							| 
									
										
										
										
											2013-02-26 18:44:33 +01:00
										 |  |  |  * @pre_unpark:		Optional unpark function, called before the thread is | 
					
						
							|  |  |  |  *			unparked (cpu online). This is not guaranteed to be | 
					
						
							|  |  |  |  *			called on the target cpu of the thread. Careful! | 
					
						
							| 
									
										
										
										
											2013-01-31 12:11:12 +00:00
										 |  |  |  * @selfparking:	Thread is not parked by the park function. | 
					
						
							| 
									
										
										
										
											2012-07-16 10:42:36 +00:00
										 |  |  |  * @thread_comm:	The base name of the thread | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | struct smp_hotplug_thread { | 
					
						
							|  |  |  | 	struct task_struct __percpu	**store; | 
					
						
							|  |  |  | 	struct list_head		list; | 
					
						
							|  |  |  | 	int				(*thread_should_run)(unsigned int cpu); | 
					
						
							|  |  |  | 	void				(*thread_fn)(unsigned int cpu); | 
					
						
							| 
									
										
										
										
											2013-01-31 12:11:12 +00:00
										 |  |  | 	void				(*create)(unsigned int cpu); | 
					
						
							| 
									
										
										
										
											2012-07-16 10:42:36 +00:00
										 |  |  | 	void				(*setup)(unsigned int cpu); | 
					
						
							|  |  |  | 	void				(*cleanup)(unsigned int cpu, bool online); | 
					
						
							|  |  |  | 	void				(*park)(unsigned int cpu); | 
					
						
							|  |  |  | 	void				(*unpark)(unsigned int cpu); | 
					
						
							| 
									
										
										
										
											2013-02-26 18:44:33 +01:00
										 |  |  | 	void				(*pre_unpark)(unsigned int cpu); | 
					
						
							| 
									
										
										
										
											2013-01-31 12:11:12 +00:00
										 |  |  | 	bool				selfparking; | 
					
						
							| 
									
										
										
										
											2012-07-16 10:42:36 +00:00
										 |  |  | 	const char			*thread_comm; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int smpboot_register_percpu_thread(struct smp_hotplug_thread *plug_thread); | 
					
						
							|  |  |  | void smpboot_unregister_percpu_thread(struct smp_hotplug_thread *plug_thread); | 
					
						
							|  |  |  | int smpboot_thread_schedule(void); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif
 |