?? list.c
字號(hào):
#ifdef _cplusplus
extern"C"
{
#endif
#include "list.h"
/*
* Insert a new entry between two known consecutive entries.
*
* This is only for internal list manipulation where we know
* the prev/next entries already!
*/
void __list_add( struct list_head * new,
struct list_head * prev,
struct list_head * next )
{
next->prev = new;
new->next = next;
new->prev = prev;
prev->next = new;
}
/**
* list_add - add a new entry
* @new: new entry to be added
* @head: list head to add it after
*
* Insert a new entry after the specified head.
* This is good for implementing stacks.
*/
void list_add( struct list_head * new, struct list_head * head )
{
__list_add( new, head, head->next );
}
/**
* list_add_tail - add a new entry
* @new: new entry to be added
* @head: list head to add it before
*
* Insert a new entry before the specified head.
* This is useful for implementing queues.
*/
void list_add_tail( struct list_head * new, struct list_head * head )
{
__list_add( new, head->prev, head );
}
/*
* Delete a list entry by making the prev/next entries
* point to each other.
*
* This is only for internal list manipulation where we know
* the prev/next entries already!
*/
void __list_del( struct list_head * prev,
struct list_head * next )
{
next->prev = prev;
prev->next = next;
}
/**
* list_del - deletes entry from list.
* @entry: the element to delete from the list.
* Note: list_empty on entry does not return true after this, the entry is in an undefined state.
*/
void list_del( struct list_head * entry )
{
__list_del( entry->prev, entry->next );
}
/**
* list_del_init - deletes entry from list and reinitialize it.
* @entry: the element to delete from the list.
*/
void list_del_init( struct list_head * entry )
{
__list_del( entry->prev, entry->next );
INIT_LIST_HEAD( entry );
}
/**
* list_empty - tests whether a list is empty
* @head: the list to test.
*/
int list_empty( struct list_head * head )
{
return head->next == head;
}
/**
* list_splice - join two lists
* @list: the new list to add.
* @head: the place to add it in the first list.
*/
void list_splice( struct list_head * list, struct list_head * head )
{
struct list_head *first = list->next;
if ( first != list )
{
struct list_head * last = list->prev;
struct list_head *at = head->next;
first->prev = head;
head->next = first;
last->next = at;
at->prev = last;
}
}
#ifdef _cplusplus
}
#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -