/* SPDX-License-Identifier: GPL-2.0 */
#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
* @ create : Optional setup function , called when the thread gets
* created ( Not called from the thread context )
* @ 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 )
* @ selfparking : Thread is not parked by the park function .
* @ 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);
void (*create)(unsigned int cpu);
void (*setup)(unsigned int cpu);
void (*cleanup)(unsigned int cpu, bool online);
void (*park)(unsigned int cpu);
void (*unpark)(unsigned int cpu);
bool selfparking;
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);
#endif
Messung V0.5 in Prozent C=94 H=100 G=96
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-09-29)
¤
*© Formatika GbR, Deutschland