diff options
author | Björn-Egil Dahlberg <[email protected]> | 2013-07-24 19:55:47 +0200 |
---|---|---|
committer | Björn-Egil Dahlberg <[email protected]> | 2013-07-24 19:55:47 +0200 |
commit | 2bf244968fb368b204e7af4b33b72d6a71a937c6 (patch) | |
tree | 52626e47683ddcc3c5c79fa011f13314cfcb3328 /erts/emulator/beam/erl_drv_thread.c | |
parent | a938fc96881564f5f56a510b0c750efaa9ed48e4 (diff) | |
download | otp-2bf244968fb368b204e7af4b33b72d6a71a937c6.tar.gz otp-2bf244968fb368b204e7af4b33b72d6a71a937c6.tar.bz2 otp-2bf244968fb368b204e7af4b33b72d6a71a937c6.zip |
erts: Extend erl_driver interface with lock names
Lock and thread names are already a feature in the driver interface.
This extension will let developers read these names. Eases debugging.
Diffstat (limited to 'erts/emulator/beam/erl_drv_thread.c')
-rw-r--r-- | erts/emulator/beam/erl_drv_thread.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_drv_thread.c b/erts/emulator/beam/erl_drv_thread.c index a49a155701..4f1bba8657 100644 --- a/erts/emulator/beam/erl_drv_thread.c +++ b/erts/emulator/beam/erl_drv_thread.c @@ -188,6 +188,17 @@ erl_drv_mutex_destroy(ErlDrvMutex *dmtx) #endif } + +char * +erl_drv_mutex_name(ErlDrvMutex *dmtx) +{ +#ifdef USE_THREADS + return dmtx ? dmtx->name : NULL; +#else + return NULL; +#endif +} + int erl_drv_mutex_trylock(ErlDrvMutex *dmtx) { @@ -258,6 +269,15 @@ erl_drv_cond_destroy(ErlDrvCond *dcnd) #endif } +char * +erl_drv_cond_name(ErlDrvCond *dcnd) +{ +#ifdef USE_THREADS + return dcnd ? dcnd->name : NULL; +#else + return NULL; +#endif +} void erl_drv_cond_signal(ErlDrvCond *dcnd) @@ -331,6 +351,16 @@ erl_drv_rwlock_destroy(ErlDrvRWLock *drwlck) #endif } +char * +erl_drv_rwlock_name(ErlDrvRWLock *drwlck) +{ +#ifdef USE_THREADS + return drwlck ? drwlck->name : NULL; +#else + return NULL; +#endif +} + int erl_drv_rwlock_tryrlock(ErlDrvRWLock *drwlck) { @@ -617,6 +647,18 @@ erl_drv_thread_create(char *name, #endif } +char * +erl_drv_thread_name(ErlDrvTid tid) +{ +#ifdef USE_THREADS + struct ErlDrvTid_ *dtid = (struct ErlDrvTid_ *) tid; + return dtid ? dtid->name : NULL; +#else + return NULL; +#endif +} + + ErlDrvTid erl_drv_thread_self(void) { |