smp.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:2k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  *  include/asm-s390/smp.h
  3.  *
  4.  *  S390 version
  5.  *    Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
  6.  *    Author(s): Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com),
  7.  *               Martin Schwidefsky (schwidefsky@de.ibm.com)
  8.  */
  9. #ifndef __ASM_SMP_H
  10. #define __ASM_SMP_H
  11. #include <linux/config.h>
  12. #if defined(__KERNEL__) && defined(CONFIG_SMP) && !defined(__ASSEMBLY__)
  13. #include <asm/lowcore.h>
  14. /*
  15.   s390 specific smp.c headers
  16.  */
  17. typedef struct
  18. {
  19. int        intresting;
  20. sigp_ccode ccode; 
  21. __u32      status;
  22. __u16      cpu;
  23. } sigp_info;
  24. extern unsigned long cpu_online_map;
  25. #define NO_PROC_ID 0xFF /* No processor magic marker */
  26. /*
  27.  * This magic constant controls our willingness to transfer
  28.  * a process across CPUs. Such a transfer incurs misses on the L1
  29.  * cache, and on a P6 or P5 with multiple L2 caches L2 hits. My
  30.  * gut feeling is this will vary by board in value. For a board
  31.  * with separate L2 cache it probably depends also on the RSS, and
  32.  * for a board with shared L2 cache it ought to decay fast as other
  33.  * processes are run.
  34.  */
  35.  
  36. #define PROC_CHANGE_PENALTY 20 /* Schedule penalty */
  37. #define smp_processor_id() (current->processor)
  38. extern __inline__ int cpu_logical_map(int cpu)
  39. {
  40.         return cpu;
  41. }
  42. extern __inline__ int cpu_number_map(int cpu)
  43. {
  44.         return cpu;
  45. }
  46. extern __inline__ __u16 hard_smp_processor_id(void)
  47. {
  48.         __u16 cpu_address;
  49.  
  50.         __asm__ ("stap %0n" : "=m" (cpu_address));
  51.         return cpu_address;
  52. }
  53. #define cpu_logical_map(cpu) (cpu)
  54. #endif
  55. #endif