/* ******************************************************************************* * Copyright (c) 1996 Martin Poole * ******************************************************************************* ** ** WARNING !! WARNING !! WARNING !! WARNING !! WARNING !! WARNING !! ** ** Any changes to be made to this file should first be checked with ** mplib1 source control for library integrity. ** ** mplib1 source control can be reached at mplib1@quatermass.co.uk ** * * $Source: /home/cvs/cvsroot/onelan/onelan/src/mplib1/libsrc/bpo_l_019.c,v $ * $Author: mpoole $ * $Date: 2002/10/07 09:37:36 $ * $Revision: 1.2 $ * ******************************************************************************* * * Change History * * $Log: bpo_l_019.c,v $ * Revision 1.2 2002/10/07 09:37:36 mpoole * Initial checkin of mplib1-3.1.0 * * Revision 1.1 2002/10/07 09:36:53 mpoole * Initial checkin of mplib1-3.1.0 * * ******************************************************************************* */ #ident "$Header: /home/cvs/cvsroot/onelan/onelan/src/mplib1/libsrc/bpo_l_019.c,v 1.2 2002/10/07 09:37:36 mpoole Exp $" /* ------------------------------------------------------------------ Include files ------------------------------------------------------------------ */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* ------------------------------------------------------------------ defines ------------------------------------------------------------------ */ /* ------------------------------------------------------------------ Code starts here ------------------------------------------------------------------ */ bpo_Node_t * bpo_Init_Node_Raw( bpo_Node_t *node, void *base, char *name, void *item ) { node->lno_me = GOFF(base,node); node->lno_Succ = 0; node->lno_Pred = 0; if (name) node->lno_Name = GOFF( base, name ); else node->lno_Name = 0; if (item) node->lno_Item = GOFF( base, item ); else node->lno_Item = 0; node->lno_List = 0; return(node); } bpo_List_t * bpo_Init_List_Raw( bpo_List_t *list, void *base, int flags ) { if (list != NULL) { bpo_Init_pid_lock( &list->lno_Pid_Lock, NULL ); bpo_pid_Lock( &list->lno_Pid_Lock ); list->lno_me = GOFF( base, list ); list->lno_Head.lno_me = GOFF( base, &list->lno_Head ); list->lno_Tail.lno_me = GOFF( base, &list->lno_Tail ); list->lno_Head.lno_Pred = 0; list->lno_Head.lno_Succ = list->lno_Tail.lno_me; list->lno_Tail.lno_Pred = list->lno_Head.lno_me; list->lno_Tail.lno_Succ = 0; list->lno_Head.lno_List = list->lno_Tail.lno_List = GOFF( base, list ); list->lno_Flags = flags; list->lno_count = 0; list->lno_serial_nbr = 1L; bpo_pid_Unlock( &list->lno_Pid_Lock ); } return(list); } bpo_Node_t * bpo_Add_Head_Raw( bpo_List_t *list, void *base, bpo_Node_t *node ) { bpo_pid_Lock( &list->lno_Pid_Lock ); node->lno_Succ = list->lno_Head.lno_Succ; node->lno_Pred = list->lno_Head.lno_me; GNNODE( &list->lno_Head, list->lno_Head.lno_Succ )->lno_Pred = node->lno_me; list->lno_Head.lno_Succ = node->lno_me; node->lno_List = list->lno_me; list->lno_count++; list->lno_serial_nbr++; bpo_pid_Unlock( &list->lno_Pid_Lock ); return(node); } bpo_Node_t * bpo_Add_Tail_Raw( bpo_List_t *list, void *base, bpo_Node_t *node ) { bpo_pid_Lock( &list->lno_Pid_Lock ); node->lno_Succ = list->lno_Tail.lno_me; node->lno_Pred = list->lno_Tail.lno_Pred; GNNODE( &list->lno_Tail, list->lno_Tail.lno_Pred)->lno_Succ = node->lno_me; list->lno_Tail.lno_Pred = node->lno_me; node->lno_List = list->lno_me; list->lno_count++; list->lno_serial_nbr++; bpo_pid_Unlock( &list->lno_Pid_Lock ); return(node); } /* -- End of File -- */