| 2929 | |
| 2930 | |
| 2931 | void LockManager::purge_process(prc* process) |
| 2932 | { |
| 2933 | /************************************** |
| 2934 | * |
| 2935 | * p u r g e _ p r o c e s s |
| 2936 | * |
| 2937 | ************************************** |
| 2938 | * |
| 2939 | * Functional description |
| 2940 | * Purge all owners of the given process. |
| 2941 | * |
| 2942 | **************************************/ |
| 2943 | LOCK_TRACE(("purge_process (%ld)\n", process->prc_process_id)); |
| 2944 | |
| 2945 | SRQ lock_srq; |
| 2946 | while ((lock_srq = SRQ_NEXT(process->prc_owners)) != &process->prc_owners) |
| 2947 | { |
| 2948 | own* owner = (own*) ((UCHAR*) lock_srq - offsetof(own, own_prc_owners)); |
| 2949 | purge_owner(SRQ_REL_PTR(owner), owner); |
| 2950 | } |
| 2951 | |
| 2952 | remove_que(&process->prc_lhb_processes); |
| 2953 | insert_tail(&m_sharedMemory->getHeader()->lhb_free_processes, &process->prc_lhb_processes); |
| 2954 | |
| 2955 | process->prc_process_id = 0; |
| 2956 | process->prc_flags = 0; |
| 2957 | |
| 2958 | m_sharedMemory->eventFini(&process->prc_blocking); |
| 2959 | } |
| 2960 | |
| 2961 | |
| 2962 | void LockManager::remap_local_owners() |