Files
allwpilib/ntcore.def
Peter Johnson fef8f933d9 Add SafeThread to fix thread JNI shutdown races.
During JVM shutdown, some JNI calls may not return, so it's not possible to
reliably perform a join() during static variable destruction (which occurs
as the JVM unloads the JNI module).

Also, due to static variable destruction, it's not safe to use any members
of a static class instance from a separate thread of execution.

SafeThread is a templated thread class and a related owner class that's
designed for safe operation and shutdown of threads in the presence of
callbacks that may not return.  It also passes ownership of variables from
the static instance to the thread, so the thread can safely operate until
it exits (the last operation of the thread being to destroy its instance).

Notifiers, RpcServer, and Logger now use SafeThread to ensure race-free
destruction in both C++ and Java.

All Java callback threads are now marked as Java daemon threads so they
don't keep the JVM running after main() terminates.

All Java callback threads are now named so their purpose is more easily
identified in a debugger.

Add SetRpcServerOnStart and SetRpcServerOnExit (similar to Listener).
2015-12-28 17:51:56 -08:00

146 lines
6.5 KiB
Modula-2

LIBRARY NTCORE
EXPORTS
NT_GetEntryValue @1
NT_SetEntryValue @2
NT_SetEntryTypeValue @3
NT_SetEntryFlags @4
NT_GetEntryFlags @5
NT_DeleteEntry @6
NT_DeleteAllEntries @7
NT_GetEntryInfo @8
NT_Flush @9
NT_AddEntryListener @10
NT_RemoveEntryListener @11
NT_AddConnectionListener @12
NT_RemoveConnectionListener @13
NT_SetNetworkIdentity @18
NT_StartServer @19
NT_StopServer @20
NT_StartClient @21
NT_StopClient @22
NT_SetUpdateRate @23
NT_GetConnections @24
NT_SavePersistent @25
NT_LoadPersistent @26
NT_DisposeValue @27
NT_InitValue @28
NT_DisposeString @29
NT_InitString @30
NT_DisposeConnectionInfoArray @31
NT_Now @32
NT_SetLogger @33
NT_CreateRpc @34
NT_CreatePolledRpc @35
NT_PollRpc @36
NT_PostRpcResponse @37
NT_CallRpc @38
NT_GetRpcResult @39
NT_PackRpcDefinition @40
NT_UnpackRpcDefinition @41
NT_PackRpcValues @42
NT_UnpackRpcValues @43
NT_DisposeRpcDefinition @44
NT_DisposeRpcCallInfo @45
NT_GetType @46
NT_AllocateDoubleArray @47
NT_AllocateBooleanArray @48
NT_AllocateStringArray @49
NT_FreeDoubleArray @51
NT_FreeBooleanArray @52
NT_FreeStringArray @53
NT_GetValueType @54
NT_GetValueBoolean @55
NT_GetValueDouble @56
NT_GetValueString @57
NT_GetValueRaw @58
NT_GetValueBooleanArray @59
NT_GetValueDoubleArray @60
NT_GetValueStringArray @61
NT_GetEntryBoolean @62
NT_GetEntryDouble @63
NT_GetEntryString @64
NT_GetEntryRaw @65
NT_GetEntryBooleanArray @66
NT_GetEntryDoubleArray @67
NT_GetEntryStringArray @68
NT_SetEntryDouble @69
NT_SetEntryBoolean @70
NT_SetEntryString @71
NT_SetEntryRaw @72
NT_SetEntryBooleanArray @73
NT_SetEntryDoubleArray @74
NT_SetEntryStringArray @75
NT_DisposeEntryInfoArray @76
NT_AllocateCharArray @77
NT_FreeCharArray @78
NT_NotifierDestroyed @79
NT_StopRpcServer @80
NT_StopNotifier @81
NT_SetListenerOnStart @82
NT_SetListenerOnExit @83
NT_SetRpcServerOnStart @84
NT_SetRpcServerOnExit @85
; JNI functions
JNI_OnLoad
JNI_OnUnload
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_containsKey
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getType
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_putBoolean
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_putDouble
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_putString
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_putRaw__Ljava_lang_String_2_3B
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_putRaw__Ljava_lang_String_2Ljava_nio_ByteBuffer_2I
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_putBooleanArray
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_putDoubleArray
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_putStringArray
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_forcePutBoolean
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_forcePutDouble
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_forcePutString
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_forcePutRaw__Ljava_lang_String_2_3B
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_forcePutRaw__Ljava_lang_String_2Ljava_nio_ByteBuffer_2I
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_forcePutBooleanArray
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_forcePutDoubleArray
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_forcePutStringArray
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getValue__Ljava_lang_String_2
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getBoolean__Ljava_lang_String_2
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getDouble__Ljava_lang_String_2
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getString__Ljava_lang_String_2
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getRaw__Ljava_lang_String_2
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getBooleanArray__Ljava_lang_String_2
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getDoubleArray__Ljava_lang_String_2
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getStringArray__Ljava_lang_String_2
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getValue__Ljava_lang_String_2Ljava_lang_Object_2
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getBoolean__Ljava_lang_String_2Z
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getDouble__Ljava_lang_String_2D
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getString__Ljava_lang_String_2Ljava_lang_String_2
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getRaw__Ljava_lang_String_2_3B
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getBooleanArray__Ljava_lang_String_2_3Z
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getDoubleArray__Ljava_lang_String_2_3D
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getStringArray__Ljava_lang_String_2_3Ljava_lang_String_2
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_setEntryFlags
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getEntryFlags
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_deleteEntry
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_deleteAllEntries
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getEntries
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_flush
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_addEntryListener
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_removeEntryListener
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_addConnectionListener
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_removeConnectionListener
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getRpc__Ljava_lang_String_2
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getRpc__Ljava_lang_String_2_3B
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_callRpc__Ljava_lang_String_2_3B
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_callRpc__Ljava_lang_String_2Ljava_nio_ByteBuffer_2I
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_setNetworkIdentity
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_startServer
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_stopServer
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_startClient
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_stopClient
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_setUpdateRate
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getConnections
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_savePersistent
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_loadPersistent
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_now
Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_setLogger