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

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-2002 Silicon Graphics, Inc. All rights reserved.
  8.  */
  9. #ifndef _ASM_IA64_SN_DRIVER_H
  10. #define _ASM_IA64_SN_DRIVER_H
  11. #include <linux/devfs_fs_kernel.h>
  12. #include <asm/types.h>
  13. /*
  14. ** Interface for device driver handle management.
  15. **
  16. ** These functions are mostly for use by the loadable driver code, and
  17. ** for use by I/O bus infrastructure code.
  18. */
  19. typedef struct device_driver_s *device_driver_t;
  20. /* == Driver thread priority support == */
  21. typedef int ilvl_t;
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. struct eframe_s;
  26. struct piomap;
  27. struct dmamap;
  28. typedef __psunsigned_t iobush_t;
  29. /* interrupt function */
  30. typedef void        *intr_arg_t;
  31. typedef void intr_func_f(intr_arg_t);
  32. typedef intr_func_f    *intr_func_t;
  33. #define INTR_ARG(n) ((intr_arg_t)(__psunsigned_t)(n))
  34. /* system interrupt resource handle -- returned from intr_alloc */
  35. typedef struct intr_s *intr_t;
  36. #define INTR_HANDLE_NONE ((intr_t)0)
  37. /*
  38.  * restore interrupt level value, returned from intr_block_level
  39.  * for use with intr_unblock_level.
  40.  */
  41. typedef void *rlvl_t;
  42. /* 
  43.  * A basic, platform-independent description of I/O requirements for
  44.  * a device. This structure is usually formed by lboot based on information 
  45.  * in configuration files.  It contains information about PIO, DMA, and
  46.  * interrupt requirements for a specific instance of a device.
  47.  *
  48.  * The pio description is currently unused.
  49.  *
  50.  * The dma description describes bandwidth characteristics and bandwidth
  51.  * allocation requirements. (TBD)
  52.  *
  53.  * The Interrupt information describes the priority of interrupt, desired 
  54.  * destination, policy (TBD), whether this is an error interrupt, etc.  
  55.  * For now, interrupts are targeted to specific CPUs.
  56.  */
  57. typedef struct device_desc_s {
  58. /* pio description (currently none) */
  59. /* dma description */
  60. /* TBD: allocated badwidth requirements */
  61. /* interrupt description */
  62. devfs_handle_t intr_target; /* Hardware locator string */
  63. int  intr_policy; /* TBD */
  64. ilvl_t intr_swlevel; /* software level for blocking intr */
  65. char *intr_name; /* name of interrupt, if any */
  66. int flags;
  67. } *device_desc_t;
  68. /* flag values */
  69. #define D_INTR_ISERR 0x1 /* interrupt is for error handling */
  70. #define D_IS_ASSOC 0x2 /* descriptor is associated with a dev */
  71. #define D_INTR_NOTHREAD 0x4 /* Interrupt handler isn't threaded. */
  72. #define INTR_SWLEVEL_NOTHREAD_DEFAULT  0 /* Default
  73.  * Interrupt level in case of
  74.  * non-threaded interrupt 
  75.  * handlers
  76.  */
  77. #endif /* _ASM_IA64_SN_DRIVER_H */