/* * 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;