TAILQ_* ambiguity in sys/sys/bio.h
Luigi Rizzo
rizzo at icir.org
Wed Jul 20 15:39:44 GMT 2005
forgive me if i am wrong, but there appears to be a source of
ambiguity in the use of TAILQ* macros in sys/sys/bio.h
We have
struct bio_queue_head {
TAILQ_HEAD(bio_queue, bio) queue;
off_t last_offset;
struct bio *insert_point;
};
where the "bio_queue" name refers to a name of an internally declared
structure whose only instance is 'queue', and then we have
struct bio {
...
TAILQ_ENTRY(bio) bio_queue; /* Disksort queue. */
...
}
where bio_queue is a field name.
An example where the confusion is evident is this line in
kern/subr_disk.c::bioq_remove()
head->insert_point = TAILQ_PREV(bp, bio_queue, bio_queue);
where the former 'bio_queue' is a type name, and the second a field name.
Any objection to remove the ambiguity by renaming the type name in
struct bio_queue_head to something else ?
(ideally i'd rather not use a name at all, but apparently some of
the TAILQ_ macros do require a name for this struct even though
it's unambiguous once you know it's a TAILQ).
cheers
luigi
More information about the freebsd-current
mailing list