Messages in this thread |  | | Date | Wed, 19 Sep 2001 09:19:25 -0700 | From | Jonathan Lundell <> | Subject | Re: procfs feature or bug? |
| |
At 3:53 PM +0530 2001-09-19, Sandip Bhattacharya wrote: >I was trying out the multipage procfs entries, when i found out that i >was having a problem. > >I am trying to use the "hack" by Paul Russell to allow mangling of >filepos using ``*start'' entries as my personal page offset. Now, for >multipage entries, whatever i set as *start should be coming back to >me as offset when the next page is called. > >But in fs/proc/generic.c in proc_file_read() at the end we have ( >after the first page has been "copied_to_user") > > *ppos += start < page ? (long) start : n; > >But this _adds_ the contents of start to the offset, in the case where >I am supplying the offset in ``start''. Shouldn't this just be >_replacing_ ? 'Cause in this case the offsets get cumulatively added, >causing an oops at the end for me :( > >Or am I missing something big???
Per the comment:
> /* This is a hack to allow mangling of file pos independent > * of actual bytes read. Simply place the data at page, > * return the bytes, and set `start' to the desired offset > * as an unsigned int. - Paul.Russell@rustcorp.com.au > */
*ppos represents the offset in the *file*, not the buffer, so cumulative is correct. So when you do your read, you need to interpret it thus. I've been using it in one case as a record number, where the records are variable length. I set *start to 1, and treat is as an index into a (virtual) array of records. -- /Jonathan Lundell. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |