Cross address space thread control in a multithreaded environment
Patent 5632032 Issued on May 20, 1997. Estimated Expiration Date: May 20, 2014. Estimated Expiration Date is calculated based on simple USPTO term provisions. It does not account for terminal disclaimers, term adjustments, failure to pay maintenance fees, or other factors which might affect the term of a patent.
A method of controlling the execution of the threads of a first application such as a user application from a second application such as a debugger application running in a different address space. After initializing trace mode for the user application, the debugger waits for an event to occur on one of the threads of the user application. Upon the occurrence of an event on one of the user application threads, an event handler obtains control of the thread execution. The event handler suspends execution of the remaining threads in the application, posts the debugger and then suspends its own execution. When the debugger application has completed its debugging operations, it posts the event handler, which resumes execution of the suspended threads and returns control to the thread on which the event occurred. If a subsequent event occurs on one thread while a previous event on another thread is being processed, the event handler for the subsequent event places it in a deferred event queue for deferred processing. Events consisting of breakpoints are redriven rather than being placed on the deferred queue. The debugger application may hold selected threads in a suspended state following resumption of the remaining threads by setting hold flags associated with those threads.
Other References
Ault et al., "Cross-Address Space Control Function", IBM Technical Disclosure Bulletin, vol. 36, No. 10, Oct. 1993, pp. 591-595
Ault, "Interoperability Between MVS and Posix Functions", IBM Technical Disclosure Bulletin, vol. 35, No. 6, Nov. 1992, pp. 383-388
Ault, "Fork Clone Address Space Implementation on MVS", IBM Technical Disclosure Bulletin, vol. 35, No. 6, Nov. 1992, pp. 363-367
Tannenbaum, "Process and Processors in Distributed Systems", Modern Operating Systems, 1992, pp. 507-523
"Introducing OpenEdition MVS", IBM Publication GC23-3010-00, Feb. 1993
"MVS/ESA Support for IEEE POSIX Standards Technical Presentation Guide", IBM Publication No. GG24-3867-00, 1993
Miller, Breakpoints & Halting in Distributed Programs, Distributed Computing Systems, 1988 Int'l Conf. pp. 316-323
Fowler et al, Causal Distributed Breakpoints, Distributed Computing Systems, 1990 Int'l Conf. pp. 134-141
Anderson et al, The Performance Implications of Thread Management Alternatives for Shared-Memory Multiprocessors, IEEE Trans. on Comp. Dec. 1989, V:38 Issue 12 pp. 1631-1644
Haban et al, Global Events & Global Breakpoints in Distributed Systems, System Sciences, 1988 Annual Hawaii Int'l Conf. vol. II pp. 166-175
Scholten et al, A Debugging Tool for Distributed Systems, Tencon '93 1993 IEEE Region ID Conf. on Computer Comm. 19-21 Oct. 1993
Scholten et al, On Debugging in a Parallel System, Tencon '90 1990 IEEE Region ID Conf. on Computer & Comm. pp. 264-268
Lee et al, An Implementation of Software Tools for Replay & Partial Replay of Concurrent-C Programs, Compsac 1990, pp. 106-111
Inohara et al, A Thread Facility Based on User/Kernel Cooperation in the Xero Operating System, Compsac 1991 pp. 398-40