hi,
thanks for the help.. im inserting the code ive used for the simple ioctl.
//chardev.c /*all necessary header files included*/
#include chardev.h /*header file for ioctl*/
static int Device_open=0; static char Message[80]; static char *msg_ptr; static int device_open(struct inode *inode, struct file *file) { if(Device_open) return -EBUSY; Device_open++; MOD_INC_USE_COUNT; return 0; }
static void device_release(struct inode *inode, struct file *file) { Device_open--; MOD_DEC_USE_COUNT; return 0; }
int device_ioctl( struct inode *inode, struct file *file, unsigned int ioctl_num, unsigned long ioctl_param) { int i; char *temp; temp=(char *)ioctl_param; get_user(i,temp); printk(KERN_ALERT" the value passed from user space is %d\n",i); }
struct file_operations Fops = { .open=device_open, .release=device_release, .ioctl=device_ioctl }; // then ive written the init & cleanup functions..//
now the user space program //ioctl.c
//included fcntl.h,unistd.h,sys/ioctl.h & chardev.h
ioctl_set_length( int file_desc, int *pt) { int ret_val = ioctl(file_desc, IOCTL_SET_LENGTH, pt); if(ret_val < 0) { printf("ioctl_set_length failed"); exit(-1) } }
main() { int file_desc, ret_val; int pass; int *p; p= &pass; printf("enter val to be passed"); scanf("%d",&pass); file_desc=open("chardev",0); if(file_desc