[lkml]   [2007]   [Aug]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [patch 2/2] Sort module list by pointer address to get coherent sleepable seq_file iterators
    On Wed, Aug 15, 2007 at 07:53:01AM +0100, Al Viro wrote:
    > On Wed, Aug 15, 2007 at 02:37:41PM +0800, Fengguang Wu wrote:
    > > static void *ct_seq_next(struct seq_file *s, void *v, loff_t *pos)
    > > {
    > > loff_t *spos = (loff_t *) v;
    > > *pos = ++(*spos);
    > > return spos;
    > > }
    > >
    > > I mean 'pos' is sometimes increased in ct_seq_next(), and sometimes from
    > > seq_file.c/seq_read(), too. Thus we cannot reliably do this:
    > >
    > > *pos = (*spos) + some_variable_offset;
    > Of course we can. These guys can be sparse - note that ->start()
    > takes a pointer, and for a good reason. ->start(m, p, pos) should
    > get the first entry with offset >= *pos (or NULL if we are done) and
    > set *pos accordingly.
    > That m->index++ is "we are done with the partial, step just past it, so
    > that ->start() will pick the first real entry after it the next time it's
    > called".
    > For dense case we don't need to update *pos in ->start() - either
    > we already have one with offset == *pos (and no update is needed),
    > or we are finished and should return NULL.
    > However, we have every right to live with sparse offsets; prototype of
    > ->start() had been done the way it's done exactly to allow that kind
    > of use.

    So sparse offsets are supported, with some special cares on ->start.

    My case is to scan the address space in ranges. The "object" is the
    start offset of a range:

    ^start ^start

    Now the solution can be:
    - ->show shows the current range
    - ->next seeks to next range
    - ->start must *also* do the seek

    The last requirement is made clear by you, a fact I refused to accept :)
    My old concept was that a ->next should be called to move pages
    forward after a new start.

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2007-08-15 10:39    [W:0.021 / U:7.932 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site