diff options
Diffstat (limited to 'Linux_C_12/cCrossCallProcedureTable_121.h')
-rw-r--r-- | Linux_C_12/cCrossCallProcedureTable_121.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/Linux_C_12/cCrossCallProcedureTable_121.h b/Linux_C_12/cCrossCallProcedureTable_121.h new file mode 100644 index 0000000..6be6d2d --- /dev/null +++ b/Linux_C_12/cCrossCallProcedureTable_121.h @@ -0,0 +1,41 @@ +/* Implementation of cross call procedure table.
+ In this table a linked list of cross call entries is kept.
+ A cross call entry is a pair of a cross call code (CcRq...) number (see intrface_121.h)
+ and a pointer to a cross call procedure.
+*/
+#ifndef CROSSCALLPROCEDURETABLE_H
+#define CROSSCALLPROCEDURETABLE_H
+
+#include "util_121.h"
+
+/* A CrossCallProcedure is a procedure that modifies a CrossCallInfo struct. */
+typedef void (*CrossCallProcedure)(CrossCallInfo *);
+
+typedef struct _crosscallentry *CrossCallEntry;
+typedef struct _crosscallproceduretable *CrossCallProcedureTable;
+
+/* NewCrossCallEntry creates a CrossCallEntry with cce_next field NULL. */
+extern CrossCallEntry NewCrossCallEntry (int cce_code, CrossCallProcedure cce_proc);
+
+/* FreeCrossCallEntry frees a CrossCallEntry. */
+extern void FreeCrossCallEntry (CrossCallEntry cce);
+
+/* EmptyCrossCallProcedureTable creates an empty table. */
+extern CrossCallProcedureTable EmptyCrossCallProcedureTable (void);
+
+/* GetCrossCallProcedureTableSize returns the current number of installed cross call procedures. */
+extern int GetCrossCallProcedureTableSize (CrossCallProcedureTable ccpt);
+
+/* FreeCrossCallProcedureTable frees a CrossCallProcedureTable. */
+extern void FreeCrossCallProcedureTable (CrossCallProcedureTable ccpt);
+
+/* AddCrossCallEntry adds the given entry if not already present. */
+extern void AddCrossCallEntry (CrossCallProcedureTable ccpt, int cce_code, CrossCallProcedure cce_proc);
+
+/* AddCrossCallEntries (table,entries) adds the entries to table. */
+extern void AddCrossCallEntries (CrossCallProcedureTable theTable, CrossCallProcedureTable entries);
+
+/* FindCrossCallEntry returns the found CrossCallProcedure or NULL if not found.*/
+extern CrossCallProcedure FindCrossCallEntry (CrossCallProcedureTable ccpt, int cce_code);
+
+#endif
|