PAL { global: # Drawbridge ABIs DkVirtualMemoryAlloc; DkVirtualMemoryFree; DkVirtualMemoryProtect; DkThreadCreate; DkThreadDelayExecution; DkThreadYieldExecution; DkThreadExit; DkThreadResume; DkSemaphoreCreate; DkNotificationEventCreate; DkSynchronizationEventCreate; DkSemaphoreRelease; DkEventSet; DkEventClear; DkObjectsWaitAny; DkStreamOpen; DkStreamRead; DkStreamWrite; DkStreamMap; DkStreamUnmap; DkStreamSetLength; DkStreamFlush; DkStreamDelete; DkSendHandle; DkReceiveHandle; # Added by us DkStreamWaitForClient; DkStreamGetName; DkStreamAttributesQueryByHandle; DkStreamAttributesQuery; DkProcessCreate; DkProcessExit; DkSystemTimeQuery; DkRandomBitsRead; DkInstructionCacheFlush; DkObjectReference; DkObjectClose; # objects checkpoint? # objects reload? # The ABIs we added in the paper DkSetExceptionHandler; DkExceptionReturn; # exceptions DkCreatePhysicalMemoryChannel; # IPC DkPhysicalMemoryCommit; # IPC DkPhysicalMemoryMap; # IPC DkSegmentRegister; # set segmentation registers DkStreamChangeName; DkStreamAttributesSetByHandle; DkMemoryAvailableQuota; # Debugging ABIs pal_printf; DkDebugAttachBinary; DkDebugDetachBinary; # Control block pal_control_addr; pal_sec; # debugger interface _r_debug; local: *; }; PAL_PRIVATE { global: _dl_debug_state; };