driver_ops.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * driver_ops.h 1.15 2000/06/12 21:55:40
  3.  *
  4.  * The contents of this file are subject to the Mozilla Public License
  5.  * Version 1.1 (the "License"); you may not use this file except in
  6.  * compliance with the License. You may obtain a copy of the License
  7.  * at http://www.mozilla.org/MPL/
  8.  *
  9.  * Software distributed under the License is distributed on an "AS IS"
  10.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  11.  * the License for the specific language governing rights and
  12.  * limitations under the License. 
  13.  *
  14.  * The initial developer of the original code is David A. Hinds
  15.  * <dahinds@users.sourceforge.net>.  Portions created by David A. Hinds
  16.  * are Copyright (C) 1999 David A. Hinds.  All Rights Reserved.
  17.  *
  18.  * Alternatively, the contents of this file may be used under the
  19.  * terms of the GNU General Public License version 2 (the "GPL"), in which
  20.  * case the provisions of the GPL are applicable instead of the
  21.  * above.  If you wish to allow the use of your version of this file
  22.  * only under the terms of the GPL and not to allow others to use
  23.  * your version of this file under the MPL, indicate your decision by
  24.  * deleting the provisions above and replace them with the notice and
  25.  * other provisions required by the GPL.  If you do not delete the
  26.  * provisions above, a recipient may use your version of this file
  27.  * under either the MPL or the GPL.
  28.  */
  29. #ifndef _LINUX_DRIVER_OPS_H
  30. #define _LINUX_DRIVER_OPS_H
  31. #ifndef DEV_NAME_LEN
  32. #define DEV_NAME_LEN 32
  33. #endif
  34. #ifdef __KERNEL__
  35. typedef struct dev_node_t {
  36.     char dev_name[DEV_NAME_LEN];
  37.     u_short major, minor;
  38.     struct dev_node_t *next;
  39. } dev_node_t;
  40. typedef struct dev_locator_t {
  41.     enum { LOC_ISA, LOC_PCI } bus;
  42.     union {
  43. struct {
  44.     u_short io_base_1, io_base_2;
  45.     u_long mem_base;
  46.     u_char irq, dma;
  47. } isa;
  48. struct {
  49.     u_char bus;
  50.     u_char devfn;
  51. } pci;
  52.     } b;
  53. } dev_locator_t;
  54. typedef struct driver_operations {
  55.     char *name;
  56.     dev_node_t *(*attach) (dev_locator_t *loc);
  57.     void (*suspend) (dev_node_t *dev);
  58.     void (*resume) (dev_node_t *dev);
  59.     void (*detach) (dev_node_t *dev);
  60. } driver_operations;
  61. int register_driver(struct driver_operations *ops);
  62. void unregister_driver(struct driver_operations *ops);
  63. #endif /* __KERNEL__ */
  64. #endif /* _LINUX_DRIVER_OPS_H */