![]() |
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; }