FreeCalypso > hg > fc-tourmaline
diff src/condat/com/inc/macdef.h @ 0:4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 16 Oct 2020 06:23:26 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/condat/com/inc/macdef.h Fri Oct 16 06:23:26 2020 +0000 @@ -0,0 +1,117 @@ +/* ++----------------------------------------------------------------------------- +| Project : +| Modul : ++----------------------------------------------------------------------------- +| Copyright 2002 Texas Instruments Berlin, AG +| All rights reserved. +| +| This file is confidential and a trade secret of Texas +| Instruments Berlin, AG +| The receipt of or possession of this file does not convey +| any rights to reproduce or disclose its contents or to +| manufacture, use, or sell anything it may describe, in +| whole, or in part, without the specific written consent of +| Texas Instruments Berlin, AG. ++----------------------------------------------------------------------------- +| Purpose : Contains macros for the unified implementation of the +| Protocol Stack ++----------------------------------------------------------------------------- +*/ + +#ifndef MACDEF_H +#define MACDEF_H + +/* + * Get/Set state for one incarnation. Init state has to be called first. + */ +#undef GET_STATE +#undef SET_STATE + +#ifdef TRACE_STATE + #define INIT_STATE(P,S) ENTITY_DATA->P name = SERVICE_NAME_##P; \ + ENTITY_DATA->P state = S; \ + ENTITY_DATA->P state_name = #S; + + #define SET_STATE(P,S) {ENTITY_DATA->P state = S; \ + vsi_o_ttrace (VSI_CALLER \ + TC_STATE, \ + #P ":%s -> " #S, \ + ENTITY_DATA->P state_name ); \ + ENTITY_DATA->P state_name = #S;} + + #define GET_STATE(P) (vsi_o_ttrace (VSI_CALLER \ + TC_STATE, \ + #P ":%s", ENTITY_DATA->P state_name ), \ + ENTITY_DATA->P state) + +#else + #define INIT_STATE(P,S) {ENTITY_DATA->P state = S;} + #define SET_STATE(P,S) {ENTITY_DATA->P state = S;} + #define GET_STATE(P) (ENTITY_DATA->P state) +#endif /* TRACE_STATE */ + + +/* + * MFREE_DESC() is used to free the given descriptor, along with all following + * descriptors. + * + * Parameters: d -- "pointer" to the descriptor, either of type T_desc *, or + * an ULONG + */ +#define MFREE_DESC(d) { T_desc *desc = (T_desc *)d; \ + T_desc *next_desc; \ + while (desc NEQ NULL) \ + { \ + next_desc = (T_desc *)desc->next; \ + MFREE (desc); \ + desc = next_desc; \ + } \ + } + + +/* + * PFREE_DESC() is used to free the given primitive, along with all + * descriptors in the descriptor list of the primitive. + * + * Parameters: p -- pointer to the primitive containing a descriptor list + * (if it is an ULONG, it has to be casted to the pointer + * because the type cannot be determined by the macro!) + */ +#define PFREE_DESC(p) { MFREE_DESC ((p)->desc_list.first); \ + PFREE ((p)); \ + } + + +/* + * MFREE_DESC() is used to free the given descriptor, along with all following + * descriptors. + * + * Parameters: d -- "pointer" to the descriptor, either of type T_desc *, or + * an ULONG + */ +#define MFREE_DESC2(d) { T_desc2 *desc2 = (T_desc2 *)d; \ + T_desc2 *next_desc2; \ + while (desc2 NEQ NULL) \ + { \ + next_desc2 = (T_desc2 *)desc2->next; \ + MFREE (desc2); \ + desc2 = next_desc2; \ + } \ + } + + +/* + * PFREE_DESC() is used to free the given primitive, along with all + * descriptors in the descriptor list of the primitive. + * + * Parameters: p -- pointer to the primitive containing a descriptor list + * (if it is an ULONG, it has to be casted to the pointer + * because the type cannot be determined by the macro!) + */ +#define PFREE_DESC2(p) { MFREE_DESC2 ((p)->desc_list2.first); \ + PFREE ((p)); \ + } + + +#endif /* !MACDEF_H */