Changeset 10656 for trunk/Ohana/src/opihi/pcontrol/StackOps.c
- Timestamp:
- Dec 12, 2006, 9:37:18 AM (20 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/opihi/pcontrol/StackOps.c (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/pcontrol/StackOps.c
r10652 r10656 11 11 */ 12 12 13 # define DEBUG 0 14 15 void PrintStackInfo (Stack *stack, char *func) { 16 17 if (!DEBUG) return; 18 fprintf (stderr, "%s: %p ", func, stack); 19 fprintf (stderr, "objects: %p ", stack[0].object); 20 fprintf (stderr, "Nobjects: %d, NOBJECTS: %d\n", stack[0].Nobject, stack[0].NOBJECT); 21 } 22 13 23 /* allocate stack, setup with default values, allocate data */ 14 24 Stack *InitStack () { … … 39 49 int i; 40 50 51 PrintStackInfo (stack, __func__); 41 52 ASSERT (stack != NULL, "stack not set"); 42 53 LockStack (stack); … … 56 67 stack[0].NOBJECT += 100; 57 68 REALLOCATE (stack[0].object, void *, stack[0].NOBJECT); 69 REALLOCATE (stack[0].name, char *, stack[0].NOBJECT); 70 REALLOCATE (stack[0].id, int, stack[0].NOBJECT); 58 71 } 59 72 60 73 for (i = stack[0].Nobject; i > where; i--) { 61 74 stack[0].object[i] = stack[0].object[i-1]; 75 stack[0].name[i] = stack[0].name[i-1]; 76 stack[0].id[i] = stack[0].id[i-1]; 62 77 } 63 78 stack[0].object[where] = object; … … 75 90 void *object; 76 91 92 PrintStackInfo (stack, __func__); 77 93 ASSERT (stack != NULL, "stack not set"); 78 94 LockStack (stack); … … 100 116 void *object; 101 117 118 PrintStackInfo (stack, __func__); 102 119 ASSERT (stack != NULL, "stack not set"); 103 120 LockStack (stack); … … 122 139 void *object; 123 140 141 PrintStackInfo (stack, __func__); 124 142 ASSERT (stack != NULL, "stack not set"); 125 143 LockStack (stack); … … 143 161 int i; 144 162 163 PrintStackInfo (stack, __func__); 145 164 ASSERT (stack != NULL, "stack not set"); 146 165 … … 150 169 151 170 /* shift the remaining entries by one */ 171 /* XXX free associated memory */ 152 172 stack[0].Nobject --; 153 173 for (i = where; i < stack[0].Nobject; i++) { … … 165 185 void *object; 166 186 167 ASSERT (stack != NULL, "stack not set");168 187 PrintStackInfo (stack, __func__); 188 ASSERT (stack != NULL, "stack not set"); 169 189 for (i = 0; i < stack[0].Nobject; i++) { 170 190 if (stack[0].id[i] != id) continue; … … 180 200 void LockStack (Stack *stack) { 181 201 # ifdef THREADED 202 PrintStackInfo (stack, __func__); 182 203 ASSERT (stack != NULL, "stack not set"); 183 204 pthread_mutex_lock (&stack[0].mutex); … … 188 209 void UnlockStack (Stack *stack) { 189 210 # ifdef THREADED 211 PrintStackInfo (stack, __func__); 190 212 ASSERT (stack != NULL, "stack not set"); 191 213 pthread_mutex_unlock (&stack[0].mutex);
Note:
See TracChangeset
for help on using the changeset viewer.
