linux-old/include/linux/smp.h
<<
>>
Prefs
   1#ifndef __LINUX_SMP_H
   2#define __LINUX_SMP_H
   3
   4/*
   5 *      Generic SMP support
   6 *              Alan Cox. <alan@redhat.com>
   7 */
   8
   9#include <linux/config.h>
  10
  11#ifdef CONFIG_SMP
  12
  13#include <linux/kernel.h>
  14#include <asm/smp.h>
  15
  16/*
  17 * main cross-CPU interfaces, handles INIT, TLB flush, STOP, etc.
  18 * (defined in asm header):
  19 */ 
  20
  21/*
  22 * stops all CPUs but the current one:
  23 */
  24extern void smp_send_stop(void);
  25
  26/*
  27 * sends a 'reschedule' event to another CPU:
  28 */
  29extern void FASTCALL(smp_send_reschedule(int cpu));
  30
  31
  32/*
  33 * Boot processor call to load the other CPU's
  34 */
  35extern void smp_boot_cpus(void);
  36
  37/*
  38 * Processor call in. Must hold processors until ..
  39 */
  40extern void smp_callin(void);
  41
  42/*
  43 * Multiprocessors may now schedule
  44 */
  45extern void smp_commence(void);
  46
  47/*
  48 * Call a function on all other processors
  49 */
  50extern int smp_call_function (void (*func) (void *info), void *info,
  51                              int retry, int wait);
  52
  53/*
  54 * True once the per process idle is forked
  55 */
  56extern int smp_threads_ready;
  57
  58extern int smp_num_cpus;
  59
  60extern volatile unsigned long smp_msg_data;
  61extern volatile int smp_src_cpu;
  62extern volatile int smp_msg_id;
  63
  64#define MSG_ALL_BUT_SELF        0x8000  /* Assume <32768 CPU's */
  65#define MSG_ALL                 0x8001
  66
  67#define MSG_INVALIDATE_TLB      0x0001  /* Remote processor TLB invalidate */
  68#define MSG_STOP_CPU            0x0002  /* Sent to shut down slave CPU's
  69                                         * when rebooting
  70                                         */
  71#define MSG_RESCHEDULE          0x0003  /* Reschedule request from master CPU*/
  72#define MSG_CALL_FUNCTION       0x0004  /* Call function on all other CPUs */
  73
  74#else
  75
  76/*
  77 *      These macros fold the SMP functionality into a single CPU system
  78 */
  79 
  80#define smp_num_cpus                            1
  81#define smp_processor_id()                      0
  82#define hard_smp_processor_id()                 0
  83#define smp_threads_ready                       1
  84#define kernel_lock()
  85#define cpu_logical_map(cpu)                    0
  86#define cpu_number_map(cpu)                     0
  87#define smp_call_function(func,info,retry,wait) ({ 0; })
  88#define cpu_online_map                          1
  89
  90#endif
  91#endif
  92
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.