Re: userspace buffer in read/write system call

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, May 19, 2006 at 07:01:48 -0700, UZAIR LAKHANI wrote:
> Hello All,
> 
> Suppose I want to implement read/write file operations
> of a simple file system. Consider the read system
> call. The file system's struct file_operations
> function that will be called is this
> 
> ssize_t (*read) (struct file *, char *, size_t, loff_t
> *);
> 
> The char * in the arguments of read is a user-space
> buffer pointer. Suppose I don't want to send this
> buffer that we have got to the generic_file_read
> function or some other function and instead want to

Particularly to generic_file_read you **DO** want to pass it --
generic_file_read takes a user-space address just like the read file
operation. In fact some filesystems assign generic_file_read directly to
their read file operation slot.

> create a new buffer and send it to the
> generic_file_read (or other) function. Then copy this

Just have a look in any other filesystem. Does it do anything like that?!?!

> buffer that we have sent to the generic_file_read to
> the actual buffer that we had received so that the
> call can be completed and the buffer received is
> filled.
> 
> Consider what I am doing now is
> 
> static ssize_t
> foo_read(file_t *file, char *buf, size_t count, loff_t
> *ppos)
> {
> 	...
> 	char __user local_buffer[10];	//TODO
> 	count = 10;			// setting a new count	
> 
> 	// read_XXX below is to be taken as a function that 
> 	// will do read for us e.g. generic_file_read can be 
> 	// such a function
> 	err = read_XXX( file, local_buffer, count, ppos);
> 
> 	// now copy local_buffer into buf 
> 	...
> 
> 	// the err is -14 or BAD ADDRESS
> 	return err;
> }
> 
> Any help regrading this is welcome.
> 
> Thanks,
> Uzair Lakhani,
> Karachi, Pakistan.
> 
> 
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection around 
> http://mail.yahoo.com 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
-- 
						 Jan 'Bulb' Hudec <bulb@xxxxxx>

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux