https://www.liblfds.org/mediawiki/index.php?title=r7.1.1:Macro_LFDS711_STACK_GET_VALUE_FROM_ELEMENT&feed=atom&action=historyr7.1.1:Macro LFDS711 STACK GET VALUE FROM ELEMENT - Revision history2024-03-28T22:48:56ZRevision history for this page on the wikiMediaWiki 1.36.0https://www.liblfds.org/mediawiki/index.php?title=r7.1.1:Macro_LFDS711_STACK_GET_VALUE_FROM_ELEMENT&diff=1151&oldid=prevAdmin: 1 revision imported2017-02-17T20:16:49Z<p>1 revision imported</p>
<p><b>New page</b></p><div>{{DISPLAYTITLE:macro LFDS711_STACK_GET_VALUE_FROM_ELEMENT}}<br />
==Source Files==<br />
└───liblfds711<br />
└───inc<br />
└───liblfds711<br />
lfds711_stack.h<br />
<br />
==Opaque Structures==<br />
struct [[r7.1.1:struct lfds711_stack_element|lfds711_stack_element]];<br />
<br />
==Macro==<br />
#define LFDS711_STACK_GET_VALUE_FROM_ELEMENT( stack_element )<br />
<br />
==Parameters==<br />
''stack_element''<br />
: A ''struct lfds711_stack_element''. Not a pointer to it - the struct itself.<br />
<br />
==Return Value==<br />
Returns a void pointer, the value from the element.<br />
<br />
==Notes==<br />
The value set into a stack element is only guranteed to be visible to another logical core once the element has been popped by a thread running on that logical core.<br />
<br />
So, for example, if there was a globally allocated stack element, where a thread on logical core A set a value nd then pushed the element to the stack, a thread on logical core B would only be guaranteed to see the value set by the other thread once it pops the element from the stack.<br />
<br />
As with all ''liblfds'' macros, the macro operates on the structure itself, not a pointer to it.<br />
<br />
==Example==<br />
#include <stdio.h><br />
#include "liblfds711.h"<br />
<br />
int main()<br />
{<br />
char<br />
stack_element_name[64] = "Legion",<br />
*stack_element_name_temp;<br />
<br />
struct lfds711_misc_prng_state<br />
ps;<br />
<br />
struct lfds711_stack_element<br />
se,<br />
*se_temp;<br />
<br />
struct lfds711_stack_state<br />
ss;<br />
<br />
lfds711_misc_library_init_valid_on_current_logical_core();<br />
<br />
lfds711_misc_prng_init( &ps );<br />
<br />
lfds711_stack_init_valid_on_current_logical_core( &ss, NULL );<br />
<br />
LFDS711_STACK_SET_VALUE_IN_ELEMENT( &se, (void *) stack_element_name );<br />
<br />
lfds711_stack_push( &ss, &se, &ps );<br />
<br />
lfds711_stack_pop( &ss, &se_temp, &ps );<br />
<br />
stack_element_name_temp = (char *) LFDS711_STACK_GET_VALUE_FROM_ELEMENT( *ss_temp );<br />
<br />
printf( "stack element name is \"%s\"\n", (char *) stack_element_name_temp );<br />
<br />
lfds711_stack_cleanup( &ss, NULL );<br />
<br />
lfds711_misc_library_cleanup();<br />
<br />
return( EXIT_SUCCESS );<br />
}<br />
<br />
==See Also==<br />
* [[r7.1.1:Stack|Stack]]<br />
* ''[[r7.1.1:macro LFDS711_STACK_SET_VALUE_IN_ELEMENT|LFDS711_STACK_SET_VALUE_IN_ELEMENT]]''</div>Admin