72 lines
2.5 KiB
C
72 lines
2.5 KiB
C
/*
|
|
* Copyright (c) International Business Machines Corp., 2001
|
|
* Copyright (c) 2013 Oracle and/or its affiliates. All Rights Reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2 of
|
|
* the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it would be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write the Free Software Foundation,
|
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*
|
|
* In this header file keep all flags and other
|
|
* structures that will be needed in both kernel
|
|
* and user space. Specifically the ioctl flags
|
|
* will go in here so that in user space a program
|
|
* can specify flags for the ioctl call.
|
|
*
|
|
* HISTORY :
|
|
* 11/19/2003 Kai Zhao (ltcd3@cn.ibm.com)
|
|
*
|
|
* CODE COVERAGE: 74.9% - fs/bio.c (Total Coverage)
|
|
*
|
|
*/
|
|
|
|
#define TMOD_DRIVER_NAME "ltp test block I/O layer module"
|
|
#define TBIO_DEVICE_NAME "ltp_tbio"
|
|
#define DEVICE_NAME "/dev/tbio"
|
|
#define MAG_NUM 'k'
|
|
int TBIO_MAJOR;
|
|
|
|
#define TBIO_TO_DEV 1
|
|
#define TBIO_FROM_DEV 2
|
|
|
|
/* put ioctl flags here, use the _IO macro which is
|
|
found in linux/ioctl.h, takes a letter, and an
|
|
integer */
|
|
|
|
#define LTP_TBIO_CLONE _IO(MAG_NUM,1)
|
|
#define LTP_TBIO_ALLOC _IO(MAG_NUM,2)
|
|
#define LTP_TBIO_GET_NR_VECS _IO(MAG_NUM,3)
|
|
#define LTP_TBIO_PUT _IO(MAG_NUM,4)
|
|
#define LTP_TBIO_SPLIT _IO(MAG_NUM,5)
|
|
#define LTP_TBIO_DO_IO _IO(MAG_NUM,6)
|
|
#define LTP_TBIO_ADD_PAGE _IO(MAG_NUM,7)
|
|
|
|
/* memory between the kernel and user space is
|
|
seperated, so that if a structure is needed
|
|
to be passed between kernel and user space
|
|
a call must be made to copy_to_user or copy
|
|
from user. Use this structure to streamline
|
|
that process. For example: A function that
|
|
writes to a disc takes in a ki_write_t
|
|
pointer from userspace. In the user space
|
|
program specify the length of the pointer as
|
|
in_len, and in_data as the actual structure. */
|
|
|
|
struct tbio_interface {
|
|
void *data; /* input data */
|
|
int data_len; /* input data length */
|
|
int direction; /* read or write form DEV */
|
|
char *cmd; /* read or write */
|
|
unsigned short cmd_len; /* length of cmd */
|
|
};
|
|
typedef struct tbio_interface tbio_interface_t;
|