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

Linux/Unix编程

开发平台:

Unix_Linux

  1. /* $Id$
  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) 1992 - 1997, 2000-2001 Silicon Graphics, Inc. All rights reserved.
  8.  */
  9. #ifndef _ASM_IA64_SN_HCL_H
  10. #define _ASM_IA64_SN_HCL_H
  11. #include <asm/sn/sgi.h>
  12. #include <asm/sn/invent.h>
  13. #include <linux/devfs_fs_kernel.h>
  14. extern devfs_handle_t hcl_handle; /* HCL driver */
  15. extern devfs_handle_t hwgraph_root;
  16. extern devfs_handle_t linux_busnum;
  17. typedef long            labelcl_info_place_t;
  18. typedef long            arbitrary_info_t;
  19. typedef long            arb_info_desc_t;
  20. /* Support for INVENTORY */
  21. struct inventory_s;
  22. struct invplace_s;
  23. /* 
  24.  * Reserve room in every vertex for 2 pieces of fast access indexed information 
  25.  * Note that we do not save a pointer to the bdevsw or cdevsw[] tables anymore.
  26.  */
  27. #define HWGRAPH_NUM_INDEX_INFO 2 /* MAX Entries */
  28. #define HWGRAPH_CONNECTPT 0 /* connect point (aprent) */
  29. #define HWGRAPH_FASTINFO 1 /* callee's private handle */
  30. /*
  31.  * Reserved edge_place_t values, used as the "place" parameter to edge_get_next.
  32.  * Every vertex in the hwgraph has up to 2 *implicit* edges.  There is an implicit
  33.  * edge called "." that points to the current vertex.  There is an implicit edge
  34.  * called ".." that points to the vertex' connect point.
  35.  */
  36. #define EDGE_PLACE_WANT_CURRENT 0 /* "." */
  37. #define EDGE_PLACE_WANT_CONNECTPT 1 /* ".." */
  38. #define EDGE_PLACE_WANT_REAL_EDGES 2 /* Get the first real edge */
  39. #define HWGRAPH_RESERVED_PLACES 2
  40. /*
  41.  * Special pre-defined edge labels.
  42.  */
  43. #define HWGRAPH_EDGELBL_HW  "hw"
  44. #define HWGRAPH_EDGELBL_DOT  "."
  45. #define HWGRAPH_EDGELBL_DOTDOT  ".."
  46. #define graph_edge_place_t uint
  47. /*
  48.  * External declarations of EXPORTED SYMBOLS in hcl.c
  49.  */
  50. extern devfs_handle_t hwgraph_register(devfs_handle_t, const char *,
  51. unsigned int, unsigned int, unsigned int, unsigned int,
  52. umode_t, uid_t, gid_t, struct file_operations *, void *);
  53. extern int hwgraph_mk_symlink(devfs_handle_t, const char *, unsigned int,
  54. unsigned int, const char *, unsigned int, devfs_handle_t *, void *);
  55. extern int hwgraph_vertex_destroy(devfs_handle_t);
  56. extern int hwgraph_edge_add(devfs_handle_t, devfs_handle_t, char *);
  57. extern int hwgraph_edge_get(devfs_handle_t, char *, devfs_handle_t *);
  58. extern arbitrary_info_t hwgraph_fastinfo_get(devfs_handle_t);
  59. extern void hwgraph_fastinfo_set(devfs_handle_t, arbitrary_info_t );
  60. extern devfs_handle_t hwgraph_mk_dir(devfs_handle_t, const char *, unsigned int, void *);
  61. extern int hwgraph_connectpt_set(devfs_handle_t, devfs_handle_t);
  62. extern devfs_handle_t hwgraph_connectpt_get(devfs_handle_t);
  63. extern int hwgraph_edge_get_next(devfs_handle_t, char *, devfs_handle_t *, uint *);
  64. extern graph_error_t hwgraph_edge_remove(devfs_handle_t, char *, devfs_handle_t *);
  65. extern graph_error_t hwgraph_traverse(devfs_handle_t, char *, devfs_handle_t *);
  66. extern int hwgraph_vertex_get_next(devfs_handle_t *, devfs_handle_t *);
  67. extern int hwgraph_inventory_get_next(devfs_handle_t, invplace_t *, 
  68.       inventory_t **);
  69. extern int hwgraph_inventory_add(devfs_handle_t, int, int, major_t, minor_t, int);
  70. extern int hwgraph_inventory_remove(devfs_handle_t, int, int, major_t, minor_t, int);
  71. extern int hwgraph_controller_num_get(devfs_handle_t);
  72. extern void hwgraph_controller_num_set(devfs_handle_t, int);
  73. extern int hwgraph_path_ad(devfs_handle_t, char *, devfs_handle_t *);
  74. extern devfs_handle_t hwgraph_path_to_vertex(char *);
  75. extern devfs_handle_t hwgraph_path_to_dev(char *);
  76. extern devfs_handle_t hwgraph_block_device_get(devfs_handle_t);
  77. extern devfs_handle_t hwgraph_char_device_get(devfs_handle_t);
  78. extern graph_error_t hwgraph_char_device_add(devfs_handle_t, char *, char *, devfs_handle_t *);
  79. extern int hwgraph_path_add(devfs_handle_t, char *, devfs_handle_t *);
  80. extern int hwgraph_info_add_LBL(devfs_handle_t, char *, arbitrary_info_t);
  81. extern int hwgraph_info_get_LBL(devfs_handle_t, char *, arbitrary_info_t *);
  82. extern int hwgraph_info_replace_LBL(devfs_handle_t, char *, arbitrary_info_t,
  83.     arbitrary_info_t *);
  84. extern int hwgraph_info_get_exported_LBL(devfs_handle_t, char *, int *, arbitrary_info_t *);
  85. extern int hwgraph_info_get_next_LBL(devfs_handle_t, char *, arbitrary_info_t *,
  86.                                 labelcl_info_place_t *);
  87. extern int hwgraph_path_lookup(devfs_handle_t, char *, devfs_handle_t *, char **);
  88. extern int hwgraph_info_export_LBL(devfs_handle_t, char *, int);
  89. extern int hwgraph_info_unexport_LBL(devfs_handle_t, char *);
  90. extern int hwgraph_info_remove_LBL(devfs_handle_t, char *, arbitrary_info_t *);
  91. extern char * vertex_to_name(devfs_handle_t, char *, uint);
  92. extern graph_error_t hwgraph_vertex_unref(devfs_handle_t);
  93. #endif /* _ASM_IA64_SN_HCL_H */