linux/include/linux/smpboot.h
<<
>>
Prefs
   1#ifndef _LINUX_SMPBOOT_H
   2#define _LINUX_SMPBOOT_H
   3
   4#include <linux/types.h>
   5
   6struct task_struct;
   7/* Cookie handed to the thread_fn*/
   8struct smpboot_thread_data;
   9
  10/**
  11 * struct smp_hotplug_thread - CPU hotplug related thread descriptor
  12 * @store:              Pointer to per cpu storage for the task pointers
  13 * @list:               List head for core management
  14 * @thread_should_run:  Check whether the thread should run or not. Called with
  15 *                      preemption disabled.
  16 * @thread_fn:          The associated thread function
  17 * @create:             Optional setup function, called when the thread gets
  18 *                      created (Not called from the thread context)
  19 * @setup:              Optional setup function, called when the thread gets
  20 *                      operational the first time
  21 * @cleanup:            Optional cleanup function, called when the thread
  22 *                      should stop (module exit)
  23 * @park:               Optional park function, called when the thread is
  24 *                      parked (cpu offline)
  25 * @unpark:             Optional unpark function, called when the thread is
  26 *                      unparked (cpu online)
  27 * @pre_unpark:         Optional unpark function, called before the thread is
  28 *                      unparked (cpu online). This is not guaranteed to be
  29 *                      called on the target cpu of the thread. Careful!
  30 * @selfparking:        Thread is not parked by the park function.
  31 * @thread_comm:        The base name of the thread
  32 */
  33struct smp_hotplug_thread {
  34        struct task_struct __percpu     **store;
  35        struct list_head                list;
  36        int                             (*thread_should_run)(unsigned int cpu);
  37        void                            (*thread_fn)(unsigned int cpu);
  38        void                            (*create)(unsigned int cpu);
  39        void                            (*setup)(unsigned int cpu);
  40        void                            (*cleanup)(unsigned int cpu, bool online);
  41        void                            (*park)(unsigned int cpu);
  42        void                            (*unpark)(unsigned int cpu);
  43        void                            (*pre_unpark)(unsigned int cpu);
  44        bool                            selfparking;
  45        const char                      *thread_comm;
  46};
  47
  48int smpboot_register_percpu_thread(struct smp_hotplug_thread *plug_thread);
  49void smpboot_unregister_percpu_thread(struct smp_hotplug_thread *plug_thread);
  50int smpboot_thread_schedule(void);
  51
  52#endif
  53