/* * generate IPI list text
*/ externvoid show_ipi_list(struct seq_file *, int);
/* * Called from C code, this handles an IPI.
*/ void handle_IPI(int ipinr, struct pt_regs *regs);
/* * Setup the set of possible CPUs (via set_cpu_possible)
*/ externvoid smp_init_cpus(void);
/* * Register IPI interrupts with the arch SMP code
*/ externvoid set_smp_ipi_range(int ipi_base, int nr_ipi);
/* * Called from platform specific assembly code, this is the * secondary CPU entry point.
*/
asmlinkage void secondary_start_kernel(struct task_struct *task);
/* * Initial data for bringing up a secondary CPU.
*/ struct secondary_data { union { struct mpu_rgn_info *mpu_rgn_info;
u64 pgdir;
}; unsignedlong swapper_pg_dir; void *stack; struct task_struct *task;
}; externstruct secondary_data secondary_data; externvoid secondary_startup(void); externvoid secondary_startup_arm(void);
externint register_ipi_completion(struct completion *completion, int cpu);
struct smp_operations { #ifdef CONFIG_SMP /* * Setup the set of possible CPUs (via set_cpu_possible)
*/ void (*smp_init_cpus)(void); /* * Initialize cpu_possible map, and enable coherency
*/ void (*smp_prepare_cpus)(unsignedint max_cpus);
/* * Perform platform specific initialisation of the specified CPU.
*/ void (*smp_secondary_init)(unsignedint cpu); /* * Boot a secondary CPU, and assign it the specified idle task. * This also gives us the initial stack to use for this CPU.
*/ int (*smp_boot_secondary)(unsignedint cpu, struct task_struct *idle); #ifdef CONFIG_HOTPLUG_CPU int (*cpu_kill)(unsignedint cpu); void (*cpu_die)(unsignedint cpu); bool (*cpu_can_disable)(unsignedint cpu); int (*cpu_disable)(unsignedint cpu); #endif #endif
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.