Communicator e3000 MPE/iX Release 7.5 (Software Release C75.00): HP e3000 MPE/iX Computer Systems
> Chapter 5 Technical ArticlesPOSIX pthread (Draft 10) APIs |
||||||||||||||||
|
IntroductionFor sometime now, customers of HP e3000 have been facing problems with the threads implementation on MPE/iX. Though DCE did some "workaround" to get around these problems, this was insufficient for multiple reasons. These were done only for DCE applications. Customers with JAVA and other applications using POSIX implementation of threads would not be satisfied. These workarounds resulted in a lot of performance problems, especially for high-end customers including DCE. A solution for these were to provide the necessary POSIX pthread (Draft 10) APIs as part of FOS on MPE/iX. This article gives a technical overview of the changes done to the various subsystems in order to provide a subset of POSIX pthread (Draft 10) APIs. Current LimitationsPrior to this release, in order to write a multi-threaded application, it was mandatory to buy the DCE product on MPE, since threads was packaged along with DCE product. DCE lab was responsible for all the fixes, enhancements and maintenance of threads. This had the following disadvantages:
Solution ObjectivesThe main objectives of this solution is to provide threads as a part of FOS (make threads a logical part of the O.S.) and provide all the necessary POSIX thread interfaces as per customer (JAVA) requirements. The other objectives are to provide POSIX signals as per specification and to asynchronously cancel threads (when desired). Solution OverviewMake available Draft 10 threads APIs as per customer needs: Prior to this release, thread APIs that were provided as part of DCE were Draft 4 compliant. With this release, POSIX pthread APIs are provided as a part of FOS and are Draft 10 compliant (unless explicitly stated). However, it is to be noted that the entire POSIX Draft 10 threads APIs are not provided as a part of this solution. Only those APIs which were immediately needed by JAVA and DCE are provided. Interaction of POSIX signals with thread APIs on MPE/iX: Prior to this release, there have been problem reports from customers regarding the functioning of signals in MPE, specifically with respect to threads. With this release, signals behave the way they should, as stated in POSIX 1003.c standard. Support cancellation points for threads to become cancel aware: Until this release, Threads on MPE, were not asynchronously cancellable. With this release, threads can be asynchronously cancelled, if desired, according to the POSIX 1003.c standard. The following POSIX threads APIs are provided as a part of this solution: pthread_atfork, pthread_sigmask, pthread_kill, pthread_mutex_init, pthread_mutex_destroy, pthread_mutex_lock, pthread_mutex_trylock, pthread_mutex_unlock, pthread_cond_init, pthread_cond_destroy, pthread_cond_signal, pthread_cond_broadcast, pthread_cond_wait, pthread_cond_timedwait, pthread_attr_setscope, pthread_getschedparam, pthread_setschedparam, pthread_attr_init, pthread_attr_destroy, pthread_attr_setstacksize, pthread_attr_getstacksize, pthread_create, pthread_join, pthread_detach, pthread_exit, pthread_self, pthread_once, pthread_key_create, pthread_setspecific, pthread_ getspecific, pthread_cancel, pthread_setcancelstate, pthread_setcanceltype, pthread_testcancel, pthread_cleanup_push, pthread_cleanup_pop, pthread_continue, pthread_suspend, alarm, pause, sleep. The following POSIX signals have been implemented as a part of this solution: kill, sigemptyset, sigfillset, sigaddset, sigdelset, sigismember, sigaction, sigprocmask, sigpending, sigsuspend, sigwait, sigwaitinfo, sigtimedwait, sigqueue.Solution HighlightsSome of the important enhancements done for this solution are:
Customer BenefitsAs more and more POSIX applications get ported to MPE, the need for POSIX compliance on MPE increases. In order to retain old customers loyal to MPE and attract new customers, and in order to reduce the time required for porting onto MPE, we provide all necessary APIs on MPE. This release provides missing/non-functioning APIs of threads and signals, which are the immediate requirements of customers, like JAVA. JAVA is one of the (many) middle level applications needed for other e-services applications. With HP e3000 moving towards the e-world, it is necessary to e-enable MPE. Providing threads as part of FOS on MPE is one small step towards the big goal.ConclusionA subset of POSIX pthreads (Draft 10) APIs is packaged as a part of FOS on MPE/iX 7.5 release. This enables applications to use POSIX pthreads (Draft 10) APIs to be ported from other platforms with minimal porting effort. New multi-threaded applications can be written and executed on HP e3000 with minimal effort.
|