| 105 | } |
| 106 | |
| 107 | static |
| 108 | void removeExitedChildTids() |
| 109 | { |
| 110 | // First remove stale thread ids. |
| 111 | pid_t realPid = _real_getpid(); |
| 112 | DmtcpMutexLock(&exitedChildTidsLock); |
| 113 | for (auto it = exitedChildTids->begin(); it != exitedChildTids->end();) { |
| 114 | pid_t tid = *it; |
| 115 | pid_t realTid = VIRTUAL_TO_REAL_PID(tid); |
| 116 | if (_real_tgkill(realPid, realTid, 0) == 0) { |
| 117 | it++; |
| 118 | } else { |
| 119 | it = exitedChildTids->erase(it); |
| 120 | VirtualPidTable::instance().erase(tid); |
| 121 | } |
| 122 | } |
| 123 | DmtcpMutexUnlock(&exitedChildTidsLock); |
| 124 | } |
| 125 | |
| 126 | extern "C" |
| 127 | void dmtcp_init_virtual_tid() |
no test coverage detected