io.h
来自「AMLOGIC DPF source code」· C头文件 代码 · 共 289 行
H
289 行
/*******************************************************************
*
* Copyright C 2005 by Amlogic, Inc. All Rights Reserved.
*
* Description:
*
* Author: Amlogic Software
* Created: Fri Nov 11 01:04:59 2005
*
*******************************************************************/
/* io.h
*
* This include file contains all the constants and structures associated
* with the Input/Output Manager. This manager provides a well defined
* mechanism for accessing device drivers and a structured methodology for
* organizing device drivers.
*
* Directives provided are:
*
* + initialize a device driver
* + open a device driver
* + close a device driver
* + read from a device driver
* + write to a device driver
* + special device services
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.avfs.com/license/LICENSE.
*
* io.h,v 1.15.2.1 2003/09/04 18:47:20 joel Exp
*/
#ifndef __AVFS_IO_h
#define __AVFS_IO_h
#ifdef __cplusplus
extern "C" {
#endif
#include "./status.h"
/*
*
* The following defines the types for:
*
* + major and minor numbers
* + the return type of a device driver entry
* + a pointer to a device driver entry
* + an entry in the the Device Driver Address Table. Each entry in this
* table corresponds to an application provided device driver and
* defines the entry points for that device driver.
*/
#if 0
typedef unsigned32 avfs_device_major_number;
typedef unsigned32 avfs_device_minor_number;
#else
//modified cause dev_t is modified to unsigned int
typedef unsigned16 avfs_device_major_number;
typedef unsigned16 avfs_device_minor_number;
#endif
typedef avfs_status_code avfs_device_driver;
typedef avfs_device_driver ( *avfs_device_driver_entry )(
avfs_device_major_number,
avfs_device_minor_number,
void *
);
typedef struct {
avfs_device_driver_entry initialization_entry; /* initialization procedure */
avfs_device_driver_entry open_entry; /* open request procedure */
avfs_device_driver_entry close_entry; /* close request procedure */
avfs_device_driver_entry read_entry; /* read request procedure */
avfs_device_driver_entry write_entry; /* write request procedure */
avfs_device_driver_entry control_entry; /* special functions procedure */
} avfs_driver_address_table;
/*
* Table for the io device names
*/
typedef struct {
char *device_name;
unsigned32 device_name_length;
avfs_device_major_number major;
avfs_device_minor_number minor;
} avfs_driver_name_t;
/*
* This is the table of device names.
*/
/*
* The following declare the data required to manage the Driver
* Address Table and Device Name Table.
*/
SAPI_EXTERN unsigned32 _IO_Number_of_drivers;
SAPI_EXTERN avfs_driver_address_table *_IO_Driver_address_table;
SAPI_EXTERN unsigned32 _IO_Number_of_devices;
SAPI_EXTERN avfs_driver_name_t *_IO_Driver_name_table;
/*
* _IO_Manager_initialization
*
* DESCRIPTION:
*
* This routine performs the initialization necessary for this manager.
*/
void _IO_Manager_initialization(
avfs_driver_address_table *driver_table,
unsigned32 drivers_in_table,
unsigned32 number_of_drivers,
unsigned32 number_of_devices
);
/*
* avfs_io_register_driver
*
* DESCRIPTION:
*
* Register a driver into the device driver table.
*
*/
avfs_status_code avfs_io_register_driver(
avfs_device_major_number major,
avfs_driver_address_table *driver_table,
avfs_device_major_number *registered_major
);
/*
* avfs_io_unregister_driver
*
* DESCRIPTION:
*
* Unregister a driver from the device driver table.
*
*/
avfs_status_code avfs_io_unregister_driver(
avfs_device_major_number major
);
/*
* avfs_io_register_name
*
* DESCRIPTION:
*
* Associate a name with a driver.
*
*/
avfs_status_code avfs_io_register_name(
char *device_name,
avfs_device_major_number major,
avfs_device_minor_number minor
);
/*
* avfs_io_lookup_name
*
* DESCRIPTION:
*
* Find what driver "owns" this name
*/
avfs_status_code avfs_io_lookup_name(
const char *name,
avfs_driver_name_t *device_info
);
/*
* avfs_io_initialize
*
* DESCRIPTION:
*
* This routine implements the avfs_io_initialize directive. It is invoked
* to initialize a device driver or an individual device.
*/
avfs_status_code avfs_io_initialize(
avfs_device_major_number major,
avfs_device_minor_number minor,
void *argument
);
/*
* avfs_io_open
*
* DESCRIPTION:
*
* This routine implements the avfs_io_open directive. It is invoked
* to open a device.
*/
avfs_status_code avfs_io_open(
avfs_device_major_number major,
avfs_device_minor_number minor,
void *argument
);
/*
* avfs_io_close
*
* DESCRIPTION:
*
* This routine implements the avfs_io_close directive. It is invoked
* to close a device.
*/
avfs_status_code avfs_io_close(
avfs_device_major_number major,
avfs_device_minor_number minor,
void *argument
);
/*
* avfs_io_read
*
* DESCRIPTION:
*
* This routine implements the avfs_io_read directive. It is invoked
* to read from a device.
*/
avfs_status_code avfs_io_read(
avfs_device_major_number major,
avfs_device_minor_number minor,
void *argument
);
/*
* avfs_io_write
*
* DESCRIPTION:
*
* This routine implements the avfs_io_write directive. It is invoked
* to write to a device.
*/
avfs_status_code avfs_io_write(
avfs_device_major_number major,
avfs_device_minor_number minor,
void *argument
);
/*
* avfs_io_control
*
* DESCRIPTION:
*
* This routine implements the avfs_io_control directive. It is invoked
* to perform a device specific operation on a device.
*/
avfs_status_code avfs_io_control(
avfs_device_major_number major,
avfs_device_minor_number minor,
void *argument
);
/*
* _IO_Initialize_all_drivers
*
* DESCRIPTION:
*
* This routine initializes all of the device drivers configured
* in the Device Driver Address Table.
*/
void _IO_Initialize_all_drivers( void );
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?