driver.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:5k
- /* $Id$
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Copyright (C) 1992 - 1997, 2000 Silicon Graphics, Inc.
- * Copyright (C) 2000 by Colin Ngam
- */
- #ifndef _ASM_SN_DRIVER_H
- #define _ASM_SN_DRIVER_H
- /*
- ** Interface for device driver handle management.
- **
- ** These functions are mostly for use by the loadable driver code, and
- ** for use by I/O bus infrastructure code.
- */
- typedef struct device_driver_s *device_driver_t;
- #define DEVICE_DRIVER_NONE (device_driver_t)NULL
- /* == Driver thread priority support == */
- typedef int ilvl_t;
- /* default driver thread priority level */
- #define DRIVER_THREAD_PRI_DEFAULT (ilvl_t)230
- /* invalid driver thread priority level */
- #define DRIVER_THREAD_PRI_INVALID (ilvl_t)-1
- /* Associate a thread priority with a driver */
- extern int device_driver_thread_pri_set(device_driver_t driver,
- ilvl_t pri);
- /* Get the thread priority associated with the driver */
- extern ilvl_t device_driver_thread_pri_get(device_driver_t driver);
- /* Get the thread priority for a driver from the sysgen paramters */
- extern ilvl_t device_driver_sysgen_thread_pri_get(char *driver_prefix);
- /* Initialize device driver functions. */
- extern void device_driver_init(void);
- /* Allocate a driver handle */
- extern device_driver_t device_driver_alloc(char *prefix);
- /* Free a driver handle */
- extern void device_driver_free(device_driver_t driver);
- /* Given a device driver prefix, return a handle to the driver. */
- extern device_driver_t device_driver_get(char *prefix);
- /* Given a device, return a handle to the driver. */
- extern device_driver_t device_driver_getbydev(devfs_handle_t device);
- struct cdevsw;
- struct bdevsw;
- /* Associate a driver with bdevsw/cdevsw pointers. */
- extern int
- device_driver_devsw_put(device_driver_t driver,
- struct bdevsw *my_bdevsw,
- struct cdevsw *my_cdevsw);
- /* Given a driver, return the corresponding bdevsw and cdevsw pointers. */
- extern void
- device_driver_devsw_get( device_driver_t driver,
- struct bdevsw **bdevswp,
- struct cdevsw **cdevswp);
- /* Given a driver, return its name (prefix). */
- extern void device_driver_name_get(device_driver_t driver, char *buffer, int length);
- /*
- * A descriptor for every static device driver in the system.
- * lboot creates a table of these and places in in master.c.
- * device_driver_init runs through this table during initialization
- * in order to "register" every static device driver.
- */
- typedef struct static_device_driver_desc_s {
- char *sdd_prefix;
- struct bdevsw *sdd_bdevsw;
- struct cdevsw *sdd_cdevsw;
- } *static_device_driver_desc_t;
- extern struct static_device_driver_desc_s static_device_driver_table[];
- extern int static_devsw_count;
- /*====== administration support ========== */
- /* structure of each entry in the table created by lboot for
- * device / driver administration
- */
- typedef struct dev_admin_info_s {
- char *dai_name; /* name of the device or driver
- * prefix
- */
- char *dai_param_name; /* device or driver parameter name */
- char *dai_param_val; /* value of the parameter */
- } dev_admin_info_t;
- /* Update all the administrative hints associated with the device */
- extern void device_admin_info_update(devfs_handle_t dev_vhdl);
- /* Update all the administrative hints associated with the device driver */
- extern void device_driver_admin_info_update(device_driver_t driver);
- /* Get a particular administrative hint associated with a device */
- extern char *device_admin_info_get(devfs_handle_t dev_vhdl,
- char *info_lbl);
- /* Associate a particular administrative hint for a device */
- extern int device_admin_info_set(devfs_handle_t dev_vhdl,
- char *info_lbl,
- char *info_val);
- /* Get a particular administrative hint associated with a device driver*/
- extern char *device_driver_admin_info_get(char *driver_prefix,
- char *info_name);
- /* Associate a particular administrative hint for a device driver*/
- extern int device_driver_admin_info_set(char *driver_prefix,
- char *driver_info_lbl,
- char *driver_info_val);
- /* Initialize the extended device administrative hint table */
- extern void device_admin_table_init(void);
- /* Add a hint corresponding to a device to the extended device administrative
- * hint table.
- */
- extern void device_admin_table_update(char *dev_name,
- char *param_name,
- char *param_val);
- /* Initialize the extended device driver administrative hint table */
- extern void device_driver_admin_table_init(void);
- /* Add a hint corresponding to a device to the extended device driver
- * administrative hint table.
- */
- extern void device_driver_admin_table_update(char *drv_prefix,
- char *param_name,
- char *param_val);
- #endif /* _ASM_SN_DRIVER_H */