![]() |
Helixis 1.0
Task Programming API
|
#include "slist_internal.h"Go to the source code of this file.
Functions | |
| void | slist_internal_link_element_to_head (struct slist_state *ss, struct slist_element *volatile se) |
| void | slist_internal_link_element_after_element (struct slist_element *volatile slist_in_list_element, struct slist_element *volatile se) |
Variables | |
| hlx_api | gl_api |
| void slist_internal_link_element_after_element | ( | struct slist_element *volatile | slist_in_list_element, |
| struct slist_element *volatile | se | ||
| ) |
Definition at line 21 of file slist_link.c.
References ALIGN, ALIGN_SINGLE_POINTER, hlx_api::atomic_cas_entry, and slist_element::next.
{
ALIGN(ALIGN_SINGLE_POINTER) struct slist_element
*se_prev,
*se_next;
se_prev = (struct slist_element *) slist_in_list_element;
se_next = se_prev->next;
do
{
se->next = se_next;
}
while( se->next != (se_next = (struct slist_element *) gl_api.atomic_cas_entry((volatile atom_t *) &se_prev->next, (atom_t) se, (atom_t) se->next)) );
return;
}
| void slist_internal_link_element_to_head | ( | struct slist_state * | ss, |
| struct slist_element *volatile | se | ||
| ) |
Definition at line 5 of file slist_link.c.
References ALIGN, ALIGN_SINGLE_POINTER, hlx_api::atomic_cas_entry, slist_state::head, and slist_element::next.
Referenced by slist_new_head().
{
ALIGN(ALIGN_SINGLE_POINTER) struct slist_element
*se_next;
se_next = ss->head;
do
{
se->next = se_next;
}
while( se->next != (se_next = (struct slist_element *) gl_api.atomic_cas_entry((volatile atom_t *) &ss->head, (atom_t) se, (atom_t) se->next)) );
return;
}
1.7.4