Parameter change
[dyninst.git] / rtinst / src / RTtags.c
1
2 /*
3  * Inst functions that are common to both sp and pe on CM-5.
4  *
5  * Used for:
6  *   CMMP_receive_block
7  *   CMMP_send_block
8  *   CMMP_receive_async
9  *   CMMP_send_async
10  *   CMMP_send_noblock
11  *
12  * $Log: RTtags.c,v $
13  * Revision 1.2  1994/06/27 21:30:22  rbi
14  * Parameter change
15  *
16  * Revision 1.1  1994/02/02  00:46:13  hollings
17  * Changes to make it compile with the new tree.
18  *
19  * Revision 1.4  1993/10/19  15:29:58  hollings
20  * new simpler primitives.
21  *
22  * Revision 1.3  1993/10/01  18:15:53  hollings
23  * Added filtering and resource discovery.
24  *
25  * Revision 1.2  1993/09/02  22:07:31  hollings
26  * new include format.
27  *
28  * Revision 1.1  1993/07/02  21:49:35  hollings
29  * Initial revision
30  *
31  *
32  */
33 #include <stdio.h>
34 #include <memory.h>
35
36 #include "rtinst/h/rtinst.h"
37 #include "rtinst/h/trace.h"
38
39 #define dest_src        arg1
40 #define tag             arg2
41 #define addr            arg3
42 #define element_size    arg4
43 #define element_stride  arg5
44 #define element_count   arg6
45
46 int DYNINSTtagCount;
47 int DYNINSTtagLimit = 1000;
48 int DYNINSTtags[1000];
49
50 void DYNINSTrecordTag(int tag)
51 {
52     int i;
53
54     for (i=0; i < DYNINSTtagCount; i++) {
55         if (DYNINSTtags[i] == tag) return;
56     }
57     if (DYNINSTtagCount == DYNINSTtagLimit) abort();
58     DYNINSTtags[DYNINSTtagCount++] = tag;
59 }
60
61 void DYNINSTreportNewTags()
62 {
63     int i;
64     static int lastTagCount;
65     struct _newresource newRes;
66
67     for (i=lastTagCount; i < DYNINSTtagCount; i++) {
68         memset(&newRes, '\0', sizeof(newRes));
69         sprintf(newRes.name, "SyncObject/MsgTag/%d", DYNINSTtags[i]);
70         strcpy(newRes.abstraction, "BASE");
71         DYNINSTgenerateTraceRecord(0, TR_NEW_RESOURCE, 
72             sizeof(struct _newresource), &newRes);
73     }
74     lastTagCount = DYNINSTtagCount;
75 }