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

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  *
  3.  * This file is subject to the terms and conditions of the GNU General Public
  4.  * License.  See the file "COPYING" in the main directory of this archive
  5.  * for more details.
  6.  *
  7.  * Copyright (C) 2000-2002 Silicon Graphics, Inc. All rights reserved.
  8.  */
  9. #ifndef _ASM_IA64_SN_SGI_H
  10. #define _ASM_IA64_SN_SGI_H
  11. #include <linux/config.h>
  12. #include <asm/sn/types.h>
  13. #include <asm/uaccess.h> /* for copy_??_user */
  14. #include <linux/mm.h>
  15. #include <linux/devfs_fs_kernel.h>
  16. // This devfs stuff needs a better home .....
  17. struct directory_type
  18. {
  19.     struct devfs_entry *first;
  20.     struct devfs_entry *last;
  21.     unsigned int num_removable;
  22. };
  23. struct file_type
  24. {
  25.     unsigned long size;
  26. };
  27. struct device_type
  28. {
  29.     unsigned short major;
  30.     unsigned short minor;
  31. };
  32. struct fcb_type  /*  File, char, block type  */
  33. {
  34.     uid_t default_uid;
  35.     gid_t default_gid;
  36.     void *ops;
  37.     union 
  38.     {
  39. struct file_type file;
  40. struct device_type device;
  41.     }
  42.     u;
  43.     unsigned char auto_owner:1;
  44.     unsigned char aopen_notify:1;
  45.     unsigned char removable:1;  /*  Belongs in device_type, but save space   */
  46.     unsigned char open:1;       /*  Not entirely correct                     */
  47. };
  48. struct symlink_type
  49. {
  50.     unsigned int length;  /*  Not including the NULL-termimator  */
  51.     char *linkname;       /*  This is NULL-terminated            */
  52. };
  53. struct fifo_type
  54. {
  55.     uid_t uid;
  56.     gid_t gid;
  57. };
  58. struct devfs_entry
  59. {
  60.     void *info;
  61.     union 
  62.     {
  63. struct directory_type dir;
  64. struct fcb_type fcb;
  65. struct symlink_type symlink;
  66. struct fifo_type fifo;
  67.     }
  68.     u;
  69.     struct devfs_entry *prev;    /*  Previous entry in the parent directory  */
  70.     struct devfs_entry *next;    /*  Next entry in the parent directory      */
  71.     struct devfs_entry *parent;  /*  The parent directory                    */
  72.     struct devfs_entry *slave;   /*  Another entry to unregister             */
  73.     struct devfs_inode *first_inode;
  74.     struct devfs_inode *last_inode;
  75.     umode_t mode;
  76.     unsigned short namelen;  /*  I think 64k+ filenames are a way off...  */
  77.     unsigned char registered:1;
  78.     unsigned char show_unreg:1;
  79.     unsigned char hide:1;
  80.     unsigned char no_persistence /*:1*/;
  81.     char name[1];            /*  This is just a dummy: the allocated array is
  82.  bigger. This is NULL-terminated  */
  83. };
  84. typedef int64_t  __psint_t; /* needed by klgraph.c */
  85. typedef enum { B_FALSE, B_TRUE } boolean_t;
  86. #define ctob(x) ((uint64_t)(x)*NBPC)
  87. #define btoc(x) (((uint64_t)(x)+(NBPC-1))/NBPC)
  88. /*
  89. ** Possible return values from graph routines.
  90. */
  91. typedef enum graph_error_e {
  92. GRAPH_SUCCESS, /* 0 */
  93. GRAPH_DUP, /* 1 */
  94. GRAPH_NOT_FOUND, /* 2 */
  95. GRAPH_BAD_PARAM, /* 3 */
  96. GRAPH_HIT_LIMIT, /* 4 */
  97. GRAPH_CANNOT_ALLOC, /* 5 */
  98. GRAPH_ILLEGAL_REQUEST, /* 6 */
  99. GRAPH_IN_USE /* 7 */
  100. } graph_error_t;
  101. #define KM_SLEEP   0x0000
  102. #define KM_NOSLEEP 0x0001 /* needed by kmem_alloc_node(), kmem_zalloc()
  103.  * calls */
  104. #define VM_NOSLEEP 0x0001 /* needed kmem_alloc_node(), kmem_zalloc_node
  105.  * calls */
  106. #define XG_WIDGET_PART_NUM      0xC102          /* KONA/xt_regs.h     XG_XT_PART_NUM_VALUE */
  107. typedef uint64_t vhandl_t;
  108. #ifndef NBPP
  109. #define NBPP 4096
  110. #endif
  111. #ifndef D_MP
  112. #define D_MP 1
  113. #endif
  114. #ifndef MAXDEVNAME
  115. #define MAXDEVNAME 256
  116. #endif
  117. #ifndef NBPC
  118. #define NBPC 0
  119. #endif
  120. #ifndef _PAGESZ
  121. #define _PAGESZ 4096
  122. #endif
  123. typedef uint64_t mrlock_t; /* needed by devsupport.c */
  124. #define HUB_PIO_CONVEYOR 0x1
  125. #define CNODEID_NONE ((cnodeid_t)-1)
  126. #define XTALK_PCI_PART_NUM "030-1275-"
  127. #define kdebug 0
  128. #define COPYIN(a, b, c) copy_from_user(b,a,c)
  129. #define COPYOUT(a, b, c) copy_to_user(b,a,c)
  130. #define kvtophys(x) (alenaddr_t) (x)
  131. #define POFFMASK (NBPP - 1)
  132. #define poff(X) ((__psunsigned_t)(X) & POFFMASK)
  133. #define BZERO(a,b) memset(a, 0, b)
  134. #define kern_malloc(x) kmalloc(x, GFP_KERNEL)
  135. #define kern_free(x) kfree(x)
  136. typedef cpuid_t cpu_cookie_t;
  137. #define CPU_NONE (-1)
  138. /*
  139.  * mutext support mapping
  140.  */
  141. #define mutex_spinlock_init(s) spin_lock_init(s)
  142. inline static unsigned long
  143. mutex_spinlock(spinlock_t *sem) {
  144. unsigned long flags = 0;
  145. // spin_lock_irqsave(sem, flags);
  146. spin_lock(sem);
  147. return(flags);
  148. }
  149. // #define mutex_spinunlock(s,t) spin_unlock_irqrestore(s,t)
  150. #define mutex_spinunlock(s,t) spin_unlock(s)
  151. #define mutex_t struct semaphore
  152. #define mutex_init(s) init_MUTEX(s)
  153. #define mutex_init_locked(s) init_MUTEX_LOCKED(s)
  154. #define mutex_lock(s) down(s)
  155. #define mutex_unlock(s) up(s)
  156. #define io_splock(s) mutex_spinlock(s)
  157. #define io_spunlock(s,t) spin_unlock(s)
  158. #define spin_lock_destroy(s)
  159. #if defined(DISABLE_ASSERT)
  160. #define ASSERT(expr)
  161. #define ASSERT_ALWAYS(expr)
  162. #else
  163. #define ASSERT(expr)  do {
  164.         if(!(expr)) { 
  165. printk( "Assertion [%s] failed! %s:%s(line=%d)n",
  166. #expr,__FILE__,__FUNCTION__,__LINE__); 
  167. panic("Assertion panicn"); 
  168.         } } while(0)
  169. #define ASSERT_ALWAYS(expr) do {
  170.         if(!(expr)) { 
  171. printk( "Assertion [%s] failed! %s:%s(line=%d)n",
  172. #expr,__FILE__,__FUNCTION__,__LINE__); 
  173. panic("Assertion always panicn"); 
  174.         } } while(0)
  175. #endif /* DISABLE_ASSERT */
  176. #define PRINT_PANIC panic
  177. #ifdef CONFIG_SMP
  178. #define cpu_enabled(cpu)        (test_bit(cpu, &cpu_online_map))
  179. #else
  180. #define cpu_enabled(cpu) (1)
  181. #endif
  182. #include <asm/sn/hack.h> /* for now */
  183. #endif /* _ASM_IA64_SN_SGI_H */