blkdev.h
来自「AMLOGIC DPF source code」· C头文件 代码 · 共 211 行
H
211 行
/*******************************************************************
*
* Copyright C 2005 by Amlogic, Inc. All Rights Reserved.
*
* Description:
*
* Author: Amlogic Software
* Created: Fri Nov 11 01:06:50 2005
*
*******************************************************************/
/*
* blkdev.h - block device driver interface definitions
*
* Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia
* Author: Victor V. Vengerov <vvv@oktet.ru>
*
* @(#) blkdev.h,v 1.2 2002/10/28 14:00:42 joel Exp
*/
#ifndef __AVFS_LIBBLOCK_BLKDEV_H__
#define __AVFS_LIBBLOCK_BLKDEV_H__
#if 0
//porting
#include <avfs.h>
#include <sys/ioctl.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* Interface with device drivers
* Block device looks, initialized and behaves like traditional AVFS device
* driver. Heart of the block device driver is in BIOREQUEST ioctl. This call
* puts I/O request to the block device queue, in priority order, for
* asynchronous processing. When driver executes request, req_done
* function invoked, so callee knows about it. Look for details below.
*/
/* Block device block number datatype */
typedef avfs_unsigned32 blkdev_bnum;
/* Block device request type */
typedef enum blkdev_request_op_s {
BLKDEV_REQ_READ, /* Read operation */
BLKDEV_REQ_WRITE, /* Write operation */
BLKDEV_REQ_ASYREAD_MEM,
BLKDEV_REQ_ASYWRITE_MEM,
BLKDEV_REQ_ASYREAD_DEV,
BLKDEV_REQ_ASYWRITE_DEV,
BLKDEV_REQ_READ_DEV,
BLKDEV_REQ_WRITE_DEV
} blkdev_request_op;
/* Type for block device request done callback function.
*
* PARAMETERS:
* arg - argument supplied in blkdev_request
* status - avfs status code for this operation
* errno - errno value to be passed to the user when
* status != AVFS_SUCCESSFUL
*/
typedef void (* blkdev_request_cb)(void *arg,
avfs_status_code status,
int error);
/* blkdev_sg_buffer
* Block device scatter/gather buffer structure
*/
typedef struct blkdev_sg_buffer_s {
avfs_unsigned32 length; /* Buffer length */
void *buffer; /* Buffer pointer */
} blkdev_sg_buffer;
/* blkdev_request (Block Device Request) structure is
* used to read/write a number of blocks from/to device.
*/
#define MAX_BLKDEV_REQUEST_BUF_NUM 3 //lichao ,2005-4-11 15:11
typedef struct blkdev_request_s {
blkdev_request_op req; /* Block device operation (read or write) */
blkdev_request_cb req_done; /* Callback function */
void *done_arg; /* Argument to be passed to callback function*/
avfs_status_code status; /* Last I/O operation completion status */
int error; /* If status != AVFS_SUCCESSFUL, this field
* contains error code
*/
blkdev_bnum start; /* Start block number */
avfs_unsigned32 count; /* Number of blocks to be exchanged */
avfs_unsigned32 bufnum; /* Number of buffers provided */
blkdev_sg_buffer bufs[MAX_BLKDEV_REQUEST_BUF_NUM];/* List of scatter/gather buffers */
} blkdev_request;
/* Block device IOCTL request codes */
#define BLKIO_REQUEST _IOWR('B', 1, blkdev_request)
#define BLKIO_GETBLKSIZE _IO('B', 2)
#define BLKIO_GETSIZE _IO('B', 3)
#define BLKIO_SYNCDEV _IO('B', 4)
#define BLKIO_SETBLKSIZE _IO('B', 5)
#define BLKIO_RESET _IO('B', 6)
#define BLKIO_GET_TYPE_STR _IO('B',7)
#define DVDROM_CMD_BASE 16
#define BLKIO_STOPREAD _IO('B',DVDROM_CMD_BASE+0 )
#define BLKIO_STOPWRITE BLKIO_STOPREAD
#define BLKIO_EJECTDISC _IO('B',DVDROM_CMD_BASE+1)
#define BLKIO_LOADDISC _IO('B',DVDROM_CMD_BASE+2 )
#define BLKIO_DESCRAMBLE _IO('B',DVDROM_CMD_BASE+3)
#define BLKIO_STOP _IO('B',DVDROM_CMD_BASE+4 )
#define BLKIO_START _IO('B',DVDROM_CMD_BASE+5 )
#define BLKIO_GETDISCINFO _IO('B',DVDROM_CMD_BASE+6)
#define BLKIO_GETSTATUS _IO('B',DVDROM_CMD_BASE+7 )
#define BLKIO_SETTING _IO('B',DVDROM_CMD_BASE+8 )
#define BLKIO_PREFILL _IO('B',DVDROM_CMD_BASE+9 )
#define BLKIO_USB_CD _IO('B',DVDROM_CMD_BASE+10 )
#define BLKIO_GETDISCTYPE _IO('B',DVDROM_CMD_BASE+11 )
#define BLKIO_USB_GET_BUS_NO _IO('B',DVDROM_CMD_BASE+12 )
#define BLKIO_NAND_CLEAR _IO('B',100 ) /*by yangbin*/
#define BLKIO_NAND_BUF_ENABLE _IO('B',101 )
#define BLKIO_NAND_BUF_DISABLE _IO('B',102 )
#include "blkextend.h"
#include "fileextend.h"
/* Device driver interface conventions suppose that driver may
* contain initialize/open/close/read/write/ioctl entry points. These
* primitives (except initialize) can be implemented in generic fashion,
* based upon supplied block device driver ioctl handler. Every block
* device driver should provide initialize entry point, which is register
* all block devices and appropriate ioctl handlers.
*/
#define GENERIC_BLOCK_DEVICE_DRIVER_ENTRIES \
avfs_blkdev_generic_open, avfs_blkdev_generic_close, \
avfs_blkdev_generic_read, avfs_blkdev_generic_write, \
avfs_blkdev_generic_ioctl
/* blkdev_generic_read --
* Generic block device read primitive. Implemented using block device
* buffer management primitives.
*/
avfs_device_driver
avfs_blkdev_generic_read(
avfs_device_major_number major,
avfs_device_minor_number minor,
void * arg
);
/* blkdev_generic_write --
* Generic block device driver write primitive. Implemented using block
* device buffer management primitives.
*/
avfs_device_driver
avfs_blkdev_generic_write(
avfs_device_major_number major,
avfs_device_minor_number minor,
void * arg
);
/* blkdev_generic_open --
* Generic block device open primitive.
*/
avfs_device_driver
avfs_blkdev_generic_open(
avfs_device_major_number major,
avfs_device_minor_number minor,
void * arg
);
/* blkdev_generic_close --
* Generic block device close primitive.
*/
avfs_device_driver
avfs_blkdev_generic_close(
avfs_device_major_number major,
avfs_device_minor_number minor,
void * arg
);
/* blkdev_generic_ioctl --
* Generic block device ioctl primitive.
*/
avfs_device_driver
avfs_blkdev_generic_ioctl(
avfs_device_major_number major,
avfs_device_minor_number minor,
void * arg
);
/* blkdev_generic_get --
* get mutex when some block device conflict .
*/
void
avfs_blkdev_mutex_get();
/* blkdev_generic_put --
* put mutex when some block device conflict .
*/
void
avfs_blkdev_mutex_put();
#ifdef __cplusplus
}
#endif
#define BLK_DUMP_ADDR 0xb00000
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?