[EVENT_CAPSET_DELETE] = "Delete capability set",
[EVENT_CAPSET_ASSIGN_CAP] = "Add capability to capability set",
[EVENT_CAPSET_REMOVE_CAP] = "Remove capability from capability set",
- [EVENT_RTS_IDENTIFIER] = "Identify the RTS version",
- [EVENT_PROGRAM_ARGS] = "Identify the program arguments",
- [EVENT_PROGRAM_ENV] = "Identify the environment variables",
- [EVENT_OSPROCESS_PID] = "Identify the process ID of a capability set"
+ [EVENT_RTS_IDENTIFIER] = "RTS name and version",
+ [EVENT_PROGRAM_ARGS] = "Program arguments",
+ [EVENT_PROGRAM_ENV] = "Program environment variables",
+ [EVENT_OSPROCESS_PID] = "Process ID",
+ [EVENT_OSPROCESS_PPID] = "Parent process ID"
};
// Event type.
sizeof(EventCapsetID) + sizeof(EventCapNo);
break;
- case EVENT_OSPROCESS_PID: // (cap, pid, parent pid)
+ case EVENT_OSPROCESS_PID: // (cap, pid)
+ case EVENT_OSPROCESS_PPID:
eventTypes[t].size =
- sizeof(EventCapsetID) + 2*sizeof(StgWord32);
+ sizeof(EventCapsetID) + sizeof(StgWord32);
break;
case EVENT_SHUTDOWN: // (cap)
// Prepare event buffer for events (data).
postInt32(&eventBuf, EVENT_DATA_BEGIN);
-
- // Post a STARTUP event with the number of capabilities
- postEventHeader(&eventBuf, EVENT_STARTUP);
- postCapNo(&eventBuf, n_caps);
// Flush capEventBuf with header.
/*
void postCapsetModifyEvent (EventTypeNum tag,
EventCapsetID capset,
- StgWord32 other,
- StgWord32 other2)
+ StgWord32 other)
{
ACQUIRE_LOCK(&eventBufMutex);
postCapNo(&eventBuf, other /* capno */);
break;
}
- case EVENT_OSPROCESS_PID:
+ case EVENT_OSPROCESS_PID: // (capset, pid)
+ case EVENT_OSPROCESS_PPID: // (capset, parent_pid)
{
postWord32(&eventBuf, other);
- postWord32(&eventBuf, other2);
break;
}
default:
char *msg)
{
int strsize = strlen(msg);
- int size = strsize + sizeof(EventCapsetID)
+ int size = strsize + sizeof(EventCapsetID);
ACQUIRE_LOCK(&eventBufMutex);
postLogMsg(&capEventBuf[cap->no], EVENT_USER_MSG, msg, ap);
}
+void postEventStartup(EventCapNo n_caps)
+{
+ ACQUIRE_LOCK(&eventBufMutex);
+
+ if (!hasRoomForEvent(&eventBuf, EVENT_STARTUP)) {
+ // Flush event buffer to make room for new event.
+ printAndClearEventBuf(&eventBuf);
+ }
+
+ // Post a STARTUP event with the number of capabilities
+ postEventHeader(&eventBuf, EVENT_STARTUP);
+ postCapNo(&eventBuf, n_caps);
+
+ RELEASE_LOCK(&eventBufMutex);
+}
+
void closeBlockMarker (EventsBuf *ebuf)
{
StgInt8* save_pos;