mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
ccan/list: sync with upstream
This brings us up-to-date with ccan/list 5dbd87b876434dd703dfcc30cb0503118aac2076 git://git.ozlabs.org/~ccan/ccan This is a combination of 3 commits from ccan: list: add parens to gaurd macro args in LIST_INIT ccan/list: Add list_empty_nocheck list: trivial: fix typos in list_for_each_off's documentation git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62152 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
6eeb0f7ef4
commit
7af65953de
1 changed files with 20 additions and 5 deletions
|
@ -57,7 +57,7 @@ struct list_head
|
||||||
* Example:
|
* Example:
|
||||||
* static struct list_head my_list = LIST_HEAD_INIT(my_list);
|
* static struct list_head my_list = LIST_HEAD_INIT(my_list);
|
||||||
*/
|
*/
|
||||||
#define LIST_HEAD_INIT(name) { { &name.n, &name.n } }
|
#define LIST_HEAD_INIT(name) { { &(name).n, &(name).n } }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* LIST_HEAD - define and initialize an empty list_head
|
* LIST_HEAD - define and initialize an empty list_head
|
||||||
|
@ -237,6 +237,21 @@ static inline int list_empty_nodebug(const struct list_head *h)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* list_empty_nocheck - is a list empty?
|
||||||
|
* @h: the list_head
|
||||||
|
*
|
||||||
|
* If the list is empty, returns true. This doesn't perform any
|
||||||
|
* debug check for list consistency, so it can be called without
|
||||||
|
* locks, racing with the list being modified. This is ok for
|
||||||
|
* checks where an incorrect result is not an issue (optimized
|
||||||
|
* bail out path for example).
|
||||||
|
*/
|
||||||
|
static inline bool list_empty_nocheck(const struct list_head *h)
|
||||||
|
{
|
||||||
|
return h->n.next == &h->n;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* list_del - delete an entry from an (unknown) linked list.
|
* list_del - delete an entry from an (unknown) linked list.
|
||||||
* @n: the list_node to delete from the list.
|
* @n: the list_node to delete from the list.
|
||||||
|
@ -647,12 +662,12 @@ static inline void list_prepend_list_(struct list_head *to,
|
||||||
* so you can break and continue as normal.
|
* so you can break and continue as normal.
|
||||||
*
|
*
|
||||||
* WARNING! Being the low-level macro that it is, this wrapper doesn't know
|
* WARNING! Being the low-level macro that it is, this wrapper doesn't know
|
||||||
* nor care about the type of @i. The only assumtion made is that @i points
|
* nor care about the type of @i. The only assumption made is that @i points
|
||||||
* to a chunk of memory that at some @offset, relative to @i, contains a
|
* to a chunk of memory that at some @offset, relative to @i, contains a
|
||||||
* properly filled `struct node_list' which in turn contains pointers to
|
* properly filled `struct list_node' which in turn contains pointers to
|
||||||
* memory chunks and it's turtles all the way down. Whith all that in mind
|
* memory chunks and it's turtles all the way down. With all that in mind
|
||||||
* remember that given the wrong pointer/offset couple this macro will
|
* remember that given the wrong pointer/offset couple this macro will
|
||||||
* happilly churn all you memory untill SEGFAULT stops it, in other words
|
* happily churn all you memory until SEGFAULT stops it, in other words
|
||||||
* caveat emptor.
|
* caveat emptor.
|
||||||
*
|
*
|
||||||
* It is worth mentioning that one of legitimate use-cases for that wrapper
|
* It is worth mentioning that one of legitimate use-cases for that wrapper
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue