diff options
author | cvs2git <rtems-devel@rtems.org> | 1996-09-30 20:15:02 +0000 |
---|---|---|
committer | cvs2git <rtems-devel@rtems.org> | 1996-09-30 20:15:02 +0000 |
commit | 43e1177def5a04b962b591496b2990e1c57ce63e (patch) | |
tree | fc1be17df72a87979f270adb59423ca71992b18b /cpukit/posix/src/psignal.c | |
parent | fixed incorrect placement of CPU_STRUCTURE_ALIGNMENT macro. (diff) | |
download | rtems-3.6.0.tar.bz2 |
This commit was manufactured by cvs2svn to create tag 'rtems-3-6-0'.3.6.0
Sprout from master 1996-09-30 20:15:01 UTC Joel Sherrill <joel.sherrill@OARcorp.com> 'fixed incorrect placement of CPU_STRUCTURE_ALIGNMENT macro.'
Delete:
c/build-tools/README
c/build-tools/cklength.c
c/build-tools/eolstrip.c
c/build-tools/packhex.c
c/build-tools/unhex.c
c/src/exec/libcsupport/include/clockdrv.h
c/src/exec/libcsupport/include/console.h
c/src/exec/libcsupport/include/iosupp.h
c/src/exec/libcsupport/include/ringbuf.h
c/src/exec/libcsupport/include/rtems/assoc.h
c/src/exec/libcsupport/include/rtems/error.h
c/src/exec/libcsupport/include/rtems/libcsupport.h
c/src/exec/libcsupport/include/rtems/libio.h
c/src/exec/libcsupport/include/spurious.h
c/src/exec/libcsupport/include/sys/utsname.h
c/src/exec/libcsupport/include/timerdrv.h
c/src/exec/libcsupport/include/vmeintr.h
c/src/exec/libcsupport/src/README
c/src/exec/libcsupport/src/__brk.c
c/src/exec/libcsupport/src/__gettod.c
c/src/exec/libcsupport/src/__times.c
c/src/exec/libcsupport/src/assoc.c
c/src/exec/libcsupport/src/error.c
c/src/exec/libcsupport/src/hosterr.c
c/src/exec/libcsupport/src/libio.c
c/src/exec/libcsupport/src/malloc.c
c/src/exec/libcsupport/src/newlibc.c
c/src/exec/libcsupport/src/no_libc.c
c/src/exec/libcsupport/src/unixlibc.c
c/src/exec/libcsupport/src/utsname.c
c/src/exec/posix/include/limits.h
c/src/exec/posix/include/rtems/posix/cancel.h
c/src/exec/posix/include/rtems/posix/cond.h
c/src/exec/posix/include/rtems/posix/condmp.h
c/src/exec/posix/include/rtems/posix/config.h
c/src/exec/posix/include/rtems/posix/intr.h
c/src/exec/posix/include/rtems/posix/key.h
c/src/exec/posix/include/rtems/posix/mqueue.h
c/src/exec/posix/include/rtems/posix/mqueuemp.h
c/src/exec/posix/include/rtems/posix/mutex.h
c/src/exec/posix/include/rtems/posix/mutexmp.h
c/src/exec/posix/include/rtems/posix/posixapi.h
c/src/exec/posix/include/rtems/posix/priority.h
c/src/exec/posix/include/rtems/posix/psignal.h
c/src/exec/posix/include/rtems/posix/pthread.h
c/src/exec/posix/include/rtems/posix/pthreadmp.h
c/src/exec/posix/include/rtems/posix/semaphore.h
c/src/exec/posix/include/rtems/posix/semaphoremp.h
c/src/exec/posix/include/rtems/posix/seterr.h
c/src/exec/posix/include/rtems/posix/threadsup.h
c/src/exec/posix/include/rtems/posix/time.h
c/src/exec/posix/include/sys/utsname.h
c/src/exec/rtems/include/rtems.h
c/src/exec/rtems/include/rtems/rtems/asr.h
c/src/exec/rtems/include/rtems/rtems/attr.h
c/src/exec/rtems/include/rtems/rtems/clock.h
c/src/exec/rtems/include/rtems/rtems/config.h
c/src/exec/rtems/include/rtems/rtems/dpmem.h
c/src/exec/rtems/include/rtems/rtems/event.h
c/src/exec/rtems/include/rtems/rtems/eventmp.h
c/src/exec/rtems/include/rtems/rtems/eventset.h
c/src/exec/rtems/include/rtems/rtems/intr.h
c/src/exec/rtems/include/rtems/rtems/message.h
c/src/exec/rtems/include/rtems/rtems/modes.h
c/src/exec/rtems/include/rtems/rtems/mp.h
c/src/exec/rtems/include/rtems/rtems/msgmp.h
c/src/exec/rtems/include/rtems/rtems/options.h
c/src/exec/rtems/include/rtems/rtems/part.h
c/src/exec/rtems/include/rtems/rtems/partmp.h
c/src/exec/rtems/include/rtems/rtems/ratemon.h
c/src/exec/rtems/include/rtems/rtems/region.h
c/src/exec/rtems/include/rtems/rtems/regionmp.h
c/src/exec/rtems/include/rtems/rtems/rtemsapi.h
c/src/exec/rtems/include/rtems/rtems/sem.h
c/src/exec/rtems/include/rtems/rtems/semmp.h
c/src/exec/rtems/include/rtems/rtems/signal.h
c/src/exec/rtems/include/rtems/rtems/signalmp.h
c/src/exec/rtems/include/rtems/rtems/status.h
c/src/exec/rtems/include/rtems/rtems/support.h
c/src/exec/rtems/include/rtems/rtems/taskmp.h
c/src/exec/rtems/include/rtems/rtems/tasks.h
c/src/exec/rtems/include/rtems/rtems/timer.h
c/src/exec/rtems/include/rtems/rtems/types.h
c/src/exec/rtems/inline/rtems/rtems/asr.inl
c/src/exec/rtems/inline/rtems/rtems/attr.inl
c/src/exec/rtems/inline/rtems/rtems/dpmem.inl
c/src/exec/rtems/inline/rtems/rtems/event.inl
c/src/exec/rtems/inline/rtems/rtems/eventset.inl
c/src/exec/rtems/inline/rtems/rtems/message.inl
c/src/exec/rtems/inline/rtems/rtems/modes.inl
c/src/exec/rtems/inline/rtems/rtems/options.inl
c/src/exec/rtems/inline/rtems/rtems/part.inl
c/src/exec/rtems/inline/rtems/rtems/ratemon.inl
c/src/exec/rtems/inline/rtems/rtems/region.inl
c/src/exec/rtems/inline/rtems/rtems/sem.inl
c/src/exec/rtems/inline/rtems/rtems/status.inl
c/src/exec/rtems/inline/rtems/rtems/support.inl
c/src/exec/rtems/inline/rtems/rtems/tasks.inl
c/src/exec/rtems/inline/rtems/rtems/timer.inl
c/src/exec/rtems/macros/rtems/rtems/asr.inl
c/src/exec/rtems/macros/rtems/rtems/attr.inl
c/src/exec/rtems/macros/rtems/rtems/dpmem.inl
c/src/exec/rtems/macros/rtems/rtems/event.inl
c/src/exec/rtems/macros/rtems/rtems/eventset.inl
c/src/exec/rtems/macros/rtems/rtems/message.inl
c/src/exec/rtems/macros/rtems/rtems/modes.inl
c/src/exec/rtems/macros/rtems/rtems/options.inl
c/src/exec/rtems/macros/rtems/rtems/part.inl
c/src/exec/rtems/macros/rtems/rtems/ratemon.inl
c/src/exec/rtems/macros/rtems/rtems/region.inl
c/src/exec/rtems/macros/rtems/rtems/sem.inl
c/src/exec/rtems/macros/rtems/rtems/status.inl
c/src/exec/rtems/macros/rtems/rtems/support.inl
c/src/exec/rtems/macros/rtems/rtems/tasks.inl
c/src/exec/rtems/macros/rtems/rtems/timer.inl
c/src/exec/rtems/src/rtclock.c
c/src/exec/rtems/src/rtemstimer.c
c/src/exec/sapi/headers/confdefs.h
c/src/exec/sapi/include/confdefs.h
c/src/exec/sapi/include/rtems/config.h
c/src/exec/sapi/include/rtems/directives.h
c/src/exec/sapi/include/rtems/extension.h
c/src/exec/sapi/include/rtems/fatal.h
c/src/exec/sapi/include/rtems/init.h
c/src/exec/sapi/include/rtems/io.h
c/src/exec/sapi/include/rtems/mptables.h
c/src/exec/sapi/include/rtems/sptables.h
c/src/exec/sapi/inline/rtems/extension.inl
c/src/exec/sapi/macros/rtems/extension.inl
c/src/exec/sapi/src/exinit.c
c/src/exec/score/cpu/hppa1.1/cpu.c
c/src/exec/score/cpu/hppa1.1/cpu.h
c/src/exec/score/cpu/hppa1.1/cpu_asm.h
c/src/exec/score/cpu/hppa1.1/cpu_asm.s
c/src/exec/score/cpu/hppa1.1/hppa.h
c/src/exec/score/cpu/hppa1.1/hppatypes.h
c/src/exec/score/cpu/hppa1.1/rtems.s
c/src/exec/score/cpu/mips/asm.h
c/src/exec/score/cpu/mips/cpu.c
c/src/exec/score/cpu/mips/cpu_asm.S
c/src/exec/score/cpu/mips/cpu_asm.h
c/src/exec/score/cpu/mips/idtcpu.h
c/src/exec/score/cpu/mips/idtmon.h
c/src/exec/score/cpu/mips/iregdef.h
c/src/exec/score/cpu/mips/rtems.c
c/src/exec/score/cpu/powerpc/README
c/src/exec/score/cpu/powerpc/TODO
c/src/exec/score/cpu/powerpc/cpu.c
c/src/exec/score/cpu/powerpc/cpu.h
c/src/exec/score/cpu/powerpc/cpu_asm.s
c/src/exec/score/cpu/powerpc/irq_stub.s
c/src/exec/score/cpu/powerpc/ppc.h
c/src/exec/score/cpu/powerpc/ppctypes.h
c/src/exec/score/cpu/powerpc/rtems.s
c/src/exec/score/include/rtems/debug.h
c/src/exec/score/include/rtems/score/address.h
c/src/exec/score/include/rtems/score/apiext.h
c/src/exec/score/include/rtems/score/bitfield.h
c/src/exec/score/include/rtems/score/chain.h
c/src/exec/score/include/rtems/score/context.h
c/src/exec/score/include/rtems/score/copyrt.h
c/src/exec/score/include/rtems/score/coremsg.h
c/src/exec/score/include/rtems/score/coremutex.h
c/src/exec/score/include/rtems/score/coresem.h
c/src/exec/score/include/rtems/score/heap.h
c/src/exec/score/include/rtems/score/interr.h
c/src/exec/score/include/rtems/score/isr.h
c/src/exec/score/include/rtems/score/mpci.h
c/src/exec/score/include/rtems/score/mppkt.h
c/src/exec/score/include/rtems/score/object.h
c/src/exec/score/include/rtems/score/objectmp.h
c/src/exec/score/include/rtems/score/priority.h
c/src/exec/score/include/rtems/score/stack.h
c/src/exec/score/include/rtems/score/states.h
c/src/exec/score/include/rtems/score/sysstate.h
c/src/exec/score/include/rtems/score/thread.h
c/src/exec/score/include/rtems/score/threadmp.h
c/src/exec/score/include/rtems/score/threadq.h
c/src/exec/score/include/rtems/score/tod.h
c/src/exec/score/include/rtems/score/tqdata.h
c/src/exec/score/include/rtems/score/userext.h
c/src/exec/score/include/rtems/score/watchdog.h
c/src/exec/score/include/rtems/score/wkspace.h
c/src/exec/score/include/rtems/system.h
c/src/exec/score/inline/rtems/score/address.inl
c/src/exec/score/inline/rtems/score/chain.inl
c/src/exec/score/inline/rtems/score/coremsg.inl
c/src/exec/score/inline/rtems/score/coremutex.inl
c/src/exec/score/inline/rtems/score/coresem.inl
c/src/exec/score/inline/rtems/score/heap.inl
c/src/exec/score/inline/rtems/score/isr.inl
c/src/exec/score/inline/rtems/score/mppkt.inl
c/src/exec/score/inline/rtems/score/object.inl
c/src/exec/score/inline/rtems/score/objectmp.inl
c/src/exec/score/inline/rtems/score/priority.inl
c/src/exec/score/inline/rtems/score/stack.inl
c/src/exec/score/inline/rtems/score/states.inl
c/src/exec/score/inline/rtems/score/sysstate.inl
c/src/exec/score/inline/rtems/score/thread.inl
c/src/exec/score/inline/rtems/score/threadmp.inl
c/src/exec/score/inline/rtems/score/tod.inl
c/src/exec/score/inline/rtems/score/tqdata.inl
c/src/exec/score/inline/rtems/score/userext.inl
c/src/exec/score/inline/rtems/score/watchdog.inl
c/src/exec/score/inline/rtems/score/wkspace.inl
c/src/exec/score/macros/rtems/score/README
c/src/exec/score/macros/rtems/score/address.inl
c/src/exec/score/macros/rtems/score/chain.inl
c/src/exec/score/macros/rtems/score/coremsg.inl
c/src/exec/score/macros/rtems/score/coremutex.inl
c/src/exec/score/macros/rtems/score/coresem.inl
c/src/exec/score/macros/rtems/score/heap.inl
c/src/exec/score/macros/rtems/score/isr.inl
c/src/exec/score/macros/rtems/score/mppkt.inl
c/src/exec/score/macros/rtems/score/object.inl
c/src/exec/score/macros/rtems/score/objectmp.inl
c/src/exec/score/macros/rtems/score/priority.inl
c/src/exec/score/macros/rtems/score/stack.inl
c/src/exec/score/macros/rtems/score/states.inl
c/src/exec/score/macros/rtems/score/sysstate.inl
c/src/exec/score/macros/rtems/score/thread.inl
c/src/exec/score/macros/rtems/score/threadmp.inl
c/src/exec/score/macros/rtems/score/tod.inl
c/src/exec/score/macros/rtems/score/tqdata.inl
c/src/exec/score/macros/rtems/score/userext.inl
c/src/exec/score/macros/rtems/score/watchdog.inl
c/src/exec/score/macros/rtems/score/wkspace.inl
c/src/exec/score/src/coretod.c
c/src/exec/score/tools/hppa1.1/genoffsets.c
c/src/lib/include/rtems/assoc.h
c/src/lib/include/rtems/error.h
c/src/lib/include/rtems/libcsupport.h
c/src/lib/include/rtems/libio.h
c/src/lib/include/sys/utsname.h
c/src/lib/libbsp/hppa1.1/pxfl/README
c/src/lib/libbsp/hppa1.1/pxfl/floss-bsp.h
c/src/lib/libbsp/hppa1.1/simhppa/include/bsp.h
c/src/lib/libbsp/hppa1.1/simhppa/include/coverhd.h
c/src/lib/libbsp/hppa1.1/simhppa/include/ttydrv.h
c/src/lib/libbsp/hppa1.1/simhppa/shmsupp/README
c/src/lib/libbsp/hppa1.1/simhppa/shmsupp/addrconv.c
c/src/lib/libbsp/hppa1.1/simhppa/shmsupp/getcfg.c
c/src/lib/libbsp/hppa1.1/simhppa/shmsupp/intr.c
c/src/lib/libbsp/hppa1.1/simhppa/shmsupp/lock.c
c/src/lib/libbsp/hppa1.1/simhppa/shmsupp/mpisr.c
c/src/lib/libbsp/hppa1.1/simhppa/startup/bspclean.c
c/src/lib/libbsp/hppa1.1/simhppa/startup/bspstart.c
c/src/lib/libbsp/hppa1.1/simhppa/startup/setvec.c
c/src/lib/libbsp/hppa1.1/simhppa/times
c/src/lib/libbsp/hppa1.1/simhppa/tools/print_dump.c
c/src/lib/libbsp/hppa1.1/simhppa/tty/tty.c
c/src/lib/libbsp/mips/p4000/README
c/src/lib/libbsp/mips/p4000/console/console.c
c/src/lib/libbsp/mips/p4000/console/led.S
c/src/lib/libbsp/mips/p4000/include/bsp.h
c/src/lib/libbsp/mips/p4000/include/coverhd.h
c/src/lib/libbsp/mips/p4000/liblnk/lnklib.S
c/src/lib/libbsp/mips/p4000/start/start.S
c/src/lib/libbsp/mips/p4000/startup/bspclean.c
c/src/lib/libbsp/mips/p4000/startup/ghlinkcmds
c/src/lib/libbsp/mips/p4000/startup/idtmem.S
c/src/lib/libbsp/mips/p4000/startup/idttlb.S
c/src/lib/libbsp/mips/p4000/startup/inittlb.c
c/src/lib/libbsp/mips/p4000/startup/linkcmds
c/src/lib/libbsp/mips/p4000/startup/setvec.c
c/src/lib/libbsp/mips/p4000/times
c/src/lib/libbsp/powerpc/papyrus/README
c/src/lib/libbsp/powerpc/papyrus/dlentry/dlentry.s
c/src/lib/libbsp/powerpc/papyrus/flashentry/flashentry.s
c/src/lib/libbsp/powerpc/papyrus/include/bsp.h
c/src/lib/libbsp/powerpc/papyrus/include/coverhd.h
c/src/lib/libbsp/powerpc/papyrus/startup/bspclean.c
c/src/lib/libbsp/powerpc/papyrus/startup/bspstart.c
c/src/lib/libbsp/powerpc/papyrus/startup/linkcmds
c/src/lib/libbsp/powerpc/papyrus/startup/setvec.c
c/src/lib/libbsp/powerpc/papyrus/times
c/src/lib/libc/utsname.c
c/src/lib/libcpu/hppa1.1/clock/clock.c
c/src/lib/libcpu/hppa1.1/runway/runway.h
c/src/lib/libcpu/hppa1.1/semaphore/semaphore.c
c/src/lib/libcpu/hppa1.1/semaphore/semaphore.h
c/src/lib/libcpu/hppa1.1/timer/timer.c
c/src/lib/libcpu/mips/clock/ckinit.c
c/src/lib/libcpu/mips/clock/clock.S
c/src/lib/libcpu/mips/clock/clock.h
c/src/lib/libcpu/mips/timer/gettime.S
c/src/lib/libcpu/mips/timer/timer.c
c/src/lib/libcpu/powerpc/README
c/src/lib/libcpu/powerpc/ppc403/README
c/src/lib/libcpu/powerpc/ppc403/clock/clock.c
c/src/lib/libcpu/powerpc/ppc403/console/console.c
c/src/lib/libcpu/powerpc/ppc403/timer/timer.c
c/src/lib/libcpu/powerpc/ppc403/vectors/README
c/src/lib/libcpu/powerpc/ppc403/vectors/align_h.s
c/src/lib/libcpu/powerpc/ppc403/vectors/vectors.s
c/src/lib/libcpu/sparc/include/erc32.h
c/src/libchip/shmdr/README
c/src/libchip/shmdr/addlq.c
c/src/libchip/shmdr/cnvpkt.c
c/src/libchip/shmdr/dump.c
c/src/libchip/shmdr/fatal.c
c/src/libchip/shmdr/getlq.c
c/src/libchip/shmdr/getpkt.c
c/src/libchip/shmdr/init.c
c/src/libchip/shmdr/initlq.c
c/src/libchip/shmdr/intr.c
c/src/libchip/shmdr/mpci.h
c/src/libchip/shmdr/mpisr.c
c/src/libchip/shmdr/poll.c
c/src/libchip/shmdr/receive.c
c/src/libchip/shmdr/retpkt.c
c/src/libchip/shmdr/send.c
c/src/libchip/shmdr/setckvec.c
c/src/libchip/shmdr/shm_driver.h
c/src/optman/rtems/no-dpmem.c
c/src/optman/rtems/no-event.c
c/src/optman/rtems/no-mp.c
c/src/optman/rtems/no-msg.c
c/src/optman/rtems/no-part.c
c/src/optman/rtems/no-region.c
c/src/optman/rtems/no-rtmon.c
c/src/optman/rtems/no-sem.c
c/src/optman/rtems/no-signal.c
c/src/optman/rtems/no-timer.c
c/src/optman/sapi/no-ext.c
c/src/optman/sapi/no-io.c
cpukit/libcsupport/include/clockdrv.h
cpukit/libcsupport/include/console.h
cpukit/libcsupport/include/iosupp.h
cpukit/libcsupport/include/ringbuf.h
cpukit/libcsupport/include/rtems/assoc.h
cpukit/libcsupport/include/rtems/error.h
cpukit/libcsupport/include/rtems/libcsupport.h
cpukit/libcsupport/include/rtems/libio.h
cpukit/libcsupport/include/spurious.h
cpukit/libcsupport/include/sys/utsname.h
cpukit/libcsupport/include/timerdrv.h
cpukit/libcsupport/include/vmeintr.h
cpukit/libcsupport/src/README
cpukit/libcsupport/src/__brk.c
cpukit/libcsupport/src/__gettod.c
cpukit/libcsupport/src/__times.c
cpukit/libcsupport/src/assoc.c
cpukit/libcsupport/src/error.c
cpukit/libcsupport/src/hosterr.c
cpukit/libcsupport/src/libio.c
cpukit/libcsupport/src/malloc.c
cpukit/libcsupport/src/newlibc.c
cpukit/libcsupport/src/no_libc.c
cpukit/libcsupport/src/unixlibc.c
cpukit/libcsupport/src/utsname.c
cpukit/libmisc/README
cpukit/libmisc/monitor/README
cpukit/libmisc/monitor/mon-command.c
cpukit/libmisc/monitor/mon-config.c
cpukit/libmisc/monitor/mon-dname.c
cpukit/libmisc/monitor/mon-driver.c
cpukit/libmisc/monitor/mon-extension.c
cpukit/libmisc/monitor/mon-itask.c
cpukit/libmisc/monitor/mon-manager.c
cpukit/libmisc/monitor/mon-monitor.c
cpukit/libmisc/monitor/mon-mpci.c
cpukit/libmisc/monitor/mon-object.c
cpukit/libmisc/monitor/mon-prmisc.c
cpukit/libmisc/monitor/mon-queue.c
cpukit/libmisc/monitor/mon-server.c
cpukit/libmisc/monitor/mon-symbols.c
cpukit/libmisc/monitor/mon-task.c
cpukit/libmisc/monitor/monitor.h
cpukit/libmisc/monitor/symbols.h
cpukit/libmisc/stackchk/README
cpukit/libmisc/stackchk/check.c
cpukit/libmisc/stackchk/internal.h
cpukit/libmisc/stackchk/stackchk.h
cpukit/posix/include/aio.h
cpukit/posix/include/devctl.h
cpukit/posix/include/intr.h
cpukit/posix/include/mqueue.h
cpukit/posix/include/rtems/posix/cancel.h
cpukit/posix/include/rtems/posix/cond.h
cpukit/posix/include/rtems/posix/condmp.h
cpukit/posix/include/rtems/posix/config.h
cpukit/posix/include/rtems/posix/intr.h
cpukit/posix/include/rtems/posix/key.h
cpukit/posix/include/rtems/posix/mqueue.h
cpukit/posix/include/rtems/posix/mqueuemp.h
cpukit/posix/include/rtems/posix/mutex.h
cpukit/posix/include/rtems/posix/mutexmp.h
cpukit/posix/include/rtems/posix/posixapi.h
cpukit/posix/include/rtems/posix/priority.h
cpukit/posix/include/rtems/posix/psignal.h
cpukit/posix/include/rtems/posix/pthread.h
cpukit/posix/include/rtems/posix/pthreadmp.h
cpukit/posix/include/rtems/posix/semaphore.h
cpukit/posix/include/rtems/posix/semaphoremp.h
cpukit/posix/include/rtems/posix/threadsup.h
cpukit/posix/include/rtems/posix/time.h
cpukit/posix/include/sched.h
cpukit/posix/include/semaphore.h
cpukit/posix/inline/rtems/posix/cond.inl
cpukit/posix/inline/rtems/posix/intr.inl
cpukit/posix/inline/rtems/posix/key.inl
cpukit/posix/inline/rtems/posix/mqueue.inl
cpukit/posix/inline/rtems/posix/mutex.inl
cpukit/posix/inline/rtems/posix/priority.inl
cpukit/posix/inline/rtems/posix/pthread.inl
cpukit/posix/inline/rtems/posix/semaphore.inl
cpukit/posix/src/adasupp.c
cpukit/posix/src/aio.c
cpukit/posix/src/cancel.c
cpukit/posix/src/cond.c
cpukit/posix/src/devctl.c
cpukit/posix/src/intr.c
cpukit/posix/src/key.c
cpukit/posix/src/mqueue.c
cpukit/posix/src/mutex.c
cpukit/posix/src/psignal.c
cpukit/posix/src/pthread.c
cpukit/posix/src/ptimer.c
cpukit/posix/src/sched.c
cpukit/posix/src/semaphore.c
cpukit/posix/src/time.c
cpukit/posix/src/types.c
cpukit/rtems/include/rtems.h
cpukit/rtems/include/rtems/rtems/asr.h
cpukit/rtems/include/rtems/rtems/attr.h
cpukit/rtems/include/rtems/rtems/clock.h
cpukit/rtems/include/rtems/rtems/config.h
cpukit/rtems/include/rtems/rtems/dpmem.h
cpukit/rtems/include/rtems/rtems/event.h
cpukit/rtems/include/rtems/rtems/eventmp.h
cpukit/rtems/include/rtems/rtems/eventset.h
cpukit/rtems/include/rtems/rtems/intr.h
cpukit/rtems/include/rtems/rtems/message.h
cpukit/rtems/include/rtems/rtems/modes.h
cpukit/rtems/include/rtems/rtems/mp.h
cpukit/rtems/include/rtems/rtems/msgmp.h
cpukit/rtems/include/rtems/rtems/options.h
cpukit/rtems/include/rtems/rtems/part.h
cpukit/rtems/include/rtems/rtems/partmp.h
cpukit/rtems/include/rtems/rtems/ratemon.h
cpukit/rtems/include/rtems/rtems/region.h
cpukit/rtems/include/rtems/rtems/regionmp.h
cpukit/rtems/include/rtems/rtems/rtemsapi.h
cpukit/rtems/include/rtems/rtems/sem.h
cpukit/rtems/include/rtems/rtems/semmp.h
cpukit/rtems/include/rtems/rtems/signal.h
cpukit/rtems/include/rtems/rtems/signalmp.h
cpukit/rtems/include/rtems/rtems/status.h
cpukit/rtems/include/rtems/rtems/support.h
cpukit/rtems/include/rtems/rtems/taskmp.h
cpukit/rtems/include/rtems/rtems/tasks.h
cpukit/rtems/include/rtems/rtems/timer.h
cpukit/rtems/include/rtems/rtems/types.h
cpukit/rtems/inline/rtems/rtems/asr.inl
cpukit/rtems/inline/rtems/rtems/attr.inl
cpukit/rtems/inline/rtems/rtems/dpmem.inl
cpukit/rtems/inline/rtems/rtems/event.inl
cpukit/rtems/inline/rtems/rtems/eventset.inl
cpukit/rtems/inline/rtems/rtems/message.inl
cpukit/rtems/inline/rtems/rtems/modes.inl
cpukit/rtems/inline/rtems/rtems/options.inl
cpukit/rtems/inline/rtems/rtems/part.inl
cpukit/rtems/inline/rtems/rtems/ratemon.inl
cpukit/rtems/inline/rtems/rtems/region.inl
cpukit/rtems/inline/rtems/rtems/sem.inl
cpukit/rtems/inline/rtems/rtems/status.inl
cpukit/rtems/inline/rtems/rtems/support.inl
cpukit/rtems/inline/rtems/rtems/tasks.inl
cpukit/rtems/inline/rtems/rtems/timer.inl
cpukit/rtems/macros/rtems/rtems/asr.inl
cpukit/rtems/macros/rtems/rtems/attr.inl
cpukit/rtems/macros/rtems/rtems/dpmem.inl
cpukit/rtems/macros/rtems/rtems/event.inl
cpukit/rtems/macros/rtems/rtems/eventset.inl
cpukit/rtems/macros/rtems/rtems/message.inl
cpukit/rtems/macros/rtems/rtems/modes.inl
cpukit/rtems/macros/rtems/rtems/options.inl
cpukit/rtems/macros/rtems/rtems/part.inl
cpukit/rtems/macros/rtems/rtems/ratemon.inl
cpukit/rtems/macros/rtems/rtems/region.inl
cpukit/rtems/macros/rtems/rtems/sem.inl
cpukit/rtems/macros/rtems/rtems/status.inl
cpukit/rtems/macros/rtems/rtems/support.inl
cpukit/rtems/macros/rtems/rtems/tasks.inl
cpukit/rtems/macros/rtems/rtems/timer.inl
cpukit/rtems/src/dpmem.c
cpukit/rtems/src/event.c
cpukit/rtems/src/eventmp.c
cpukit/rtems/src/intr.c
cpukit/rtems/src/mp.c
cpukit/rtems/src/msg.c
cpukit/rtems/src/msgmp.c
cpukit/rtems/src/part.c
cpukit/rtems/src/partmp.c
cpukit/rtems/src/ratemon.c
cpukit/rtems/src/region.c
cpukit/rtems/src/regionmp.c
cpukit/rtems/src/rtclock.c
cpukit/rtems/src/rtemstimer.c
cpukit/rtems/src/sem.c
cpukit/rtems/src/semmp.c
cpukit/rtems/src/signal.c
cpukit/rtems/src/signalmp.c
cpukit/rtems/src/taskmp.c
cpukit/rtems/src/tasks.c
cpukit/sapi/include/confdefs.h
cpukit/sapi/include/rtems/config.h
cpukit/sapi/include/rtems/extension.h
cpukit/sapi/include/rtems/fatal.h
cpukit/sapi/include/rtems/init.h
cpukit/sapi/include/rtems/io.h
cpukit/sapi/include/rtems/mptables.h
cpukit/sapi/inline/rtems/extension.inl
cpukit/sapi/macros/rtems/extension.inl
cpukit/sapi/src/debug.c
cpukit/sapi/src/exinit.c
cpukit/sapi/src/extension.c
cpukit/sapi/src/fatal.c
cpukit/sapi/src/io.c
cpukit/sapi/src/posixapi.c
cpukit/sapi/src/rtemsapi.c
cpukit/score/cpu/a29k/amd.ah
cpukit/score/cpu/a29k/asm.h
cpukit/score/cpu/a29k/cpu.c
cpukit/score/cpu/a29k/pswmacro.ah
cpukit/score/cpu/hppa1.1/cpu.c
cpukit/score/cpu/i386/asm.h
cpukit/score/cpu/i386/cpu.c
cpukit/score/cpu/i386/rtems/asm.h
cpukit/score/cpu/i960/asm.h
cpukit/score/cpu/i960/cpu.c
cpukit/score/cpu/m68k/asm.h
cpukit/score/cpu/m68k/cpu.c
cpukit/score/cpu/m68k/m68302.h
cpukit/score/cpu/m68k/m68360.h
cpukit/score/cpu/m68k/qsm.h
cpukit/score/cpu/m68k/rtems/asm.h
cpukit/score/cpu/m68k/rtems/m68k/m68302.h
cpukit/score/cpu/m68k/rtems/m68k/m68360.h
cpukit/score/cpu/m68k/rtems/m68k/qsm.h
cpukit/score/cpu/m68k/rtems/m68k/sim.h
cpukit/score/cpu/m68k/sim.h
cpukit/score/cpu/mips/asm.h
cpukit/score/cpu/mips/cpu.c
cpukit/score/cpu/mips/cpu_asm.S
cpukit/score/cpu/mips/idtcpu.h
cpukit/score/cpu/mips/iregdef.h
cpukit/score/cpu/mips/rtems/asm.h
cpukit/score/cpu/mips/rtems/mips/idtcpu.h
cpukit/score/cpu/mips/rtems/mips/iregdef.h
cpukit/score/cpu/mips64orion/asm.h
cpukit/score/cpu/mips64orion/cpu.c
cpukit/score/cpu/mips64orion/cpu_asm.S
cpukit/score/cpu/mips64orion/cpu_asm.h
cpukit/score/cpu/mips64orion/idtcpu.h
cpukit/score/cpu/mips64orion/idtmon.h
cpukit/score/cpu/mips64orion/iregdef.h
cpukit/score/cpu/no_cpu/asm.h
cpukit/score/cpu/no_cpu/cpu.c
cpukit/score/cpu/no_cpu/cpu_asm.c
cpukit/score/cpu/no_cpu/rtems/asm.h
cpukit/score/cpu/sparc/README
cpukit/score/cpu/sparc/asm.h
cpukit/score/cpu/sparc/cpu.c
cpukit/score/cpu/sparc/rtems/asm.h
cpukit/score/cpu/unix/cpu.c
cpukit/score/include/rtems/debug.h
cpukit/score/include/rtems/score/address.h
cpukit/score/include/rtems/score/apiext.h
cpukit/score/include/rtems/score/bitfield.h
cpukit/score/include/rtems/score/chain.h
cpukit/score/include/rtems/score/context.h
cpukit/score/include/rtems/score/copyrt.h
cpukit/score/include/rtems/score/coremsg.h
cpukit/score/include/rtems/score/coremutex.h
cpukit/score/include/rtems/score/coresem.h
cpukit/score/include/rtems/score/heap.h
cpukit/score/include/rtems/score/interr.h
cpukit/score/include/rtems/score/isr.h
cpukit/score/include/rtems/score/mpci.h
cpukit/score/include/rtems/score/mppkt.h
cpukit/score/include/rtems/score/object.h
cpukit/score/include/rtems/score/objectmp.h
cpukit/score/include/rtems/score/priority.h
cpukit/score/include/rtems/score/stack.h
cpukit/score/include/rtems/score/states.h
cpukit/score/include/rtems/score/sysstate.h
cpukit/score/include/rtems/score/thread.h
cpukit/score/include/rtems/score/threadmp.h
cpukit/score/include/rtems/score/threadq.h
cpukit/score/include/rtems/score/tod.h
cpukit/score/include/rtems/score/tqdata.h
cpukit/score/include/rtems/score/userext.h
cpukit/score/include/rtems/score/watchdog.h
cpukit/score/include/rtems/score/wkspace.h
cpukit/score/include/rtems/system.h
cpukit/score/inline/rtems/score/address.inl
cpukit/score/inline/rtems/score/chain.inl
cpukit/score/inline/rtems/score/coremsg.inl
cpukit/score/inline/rtems/score/coremutex.inl
cpukit/score/inline/rtems/score/coresem.inl
cpukit/score/inline/rtems/score/heap.inl
cpukit/score/inline/rtems/score/isr.inl
cpukit/score/inline/rtems/score/mppkt.inl
cpukit/score/inline/rtems/score/object.inl
cpukit/score/inline/rtems/score/objectmp.inl
cpukit/score/inline/rtems/score/priority.inl
cpukit/score/inline/rtems/score/stack.inl
cpukit/score/inline/rtems/score/states.inl
cpukit/score/inline/rtems/score/sysstate.inl
cpukit/score/inline/rtems/score/thread.inl
cpukit/score/inline/rtems/score/threadmp.inl
cpukit/score/inline/rtems/score/tod.inl
cpukit/score/inline/rtems/score/tqdata.inl
cpukit/score/inline/rtems/score/userext.inl
cpukit/score/inline/rtems/score/watchdog.inl
cpukit/score/inline/rtems/score/wkspace.inl
cpukit/score/macros/README
cpukit/score/macros/rtems/score/README
cpukit/score/macros/rtems/score/address.inl
cpukit/score/macros/rtems/score/chain.inl
cpukit/score/macros/rtems/score/coremsg.inl
cpukit/score/macros/rtems/score/coremutex.inl
cpukit/score/macros/rtems/score/coresem.inl
cpukit/score/macros/rtems/score/heap.inl
cpukit/score/macros/rtems/score/isr.inl
cpukit/score/macros/rtems/score/mppkt.inl
cpukit/score/macros/rtems/score/object.inl
cpukit/score/macros/rtems/score/objectmp.inl
cpukit/score/macros/rtems/score/priority.inl
cpukit/score/macros/rtems/score/stack.inl
cpukit/score/macros/rtems/score/states.inl
cpukit/score/macros/rtems/score/sysstate.inl
cpukit/score/macros/rtems/score/thread.inl
cpukit/score/macros/rtems/score/threadmp.inl
cpukit/score/macros/rtems/score/tod.inl
cpukit/score/macros/rtems/score/tqdata.inl
cpukit/score/macros/rtems/score/userext.inl
cpukit/score/macros/rtems/score/watchdog.inl
cpukit/score/macros/rtems/score/wkspace.inl
cpukit/score/src/apiext.c
cpukit/score/src/chain.c
cpukit/score/src/coremsg.c
cpukit/score/src/coremutex.c
cpukit/score/src/coresem.c
cpukit/score/src/coretod.c
cpukit/score/src/heap.c
cpukit/score/src/interr.c
cpukit/score/src/isr.c
cpukit/score/src/mpci.c
cpukit/score/src/object.c
cpukit/score/src/objectmp.c
cpukit/score/src/thread.c
cpukit/score/src/threadmp.c
cpukit/score/src/threadq.c
cpukit/score/src/userext.c
cpukit/score/src/watchdog.c
cpukit/score/src/wkspace.c
cpukit/zlib/doc/rfc1950.txt
cpukit/zlib/doc/rfc1951.txt
cpukit/zlib/doc/rfc1952.txt
testsuites/README
testsuites/libtests/README
testsuites/libtests/malloctest/init.c
testsuites/libtests/malloctest/system.h
testsuites/libtests/malloctest/task1.c
testsuites/libtests/stackchk/blow.c
testsuites/libtests/stackchk/init.c
testsuites/libtests/stackchk/stackchk.scn
testsuites/libtests/stackchk/system.h
testsuites/libtests/stackchk/task1.c
testsuites/mptests/README
testsuites/mptests/mp01/init.c
testsuites/mptests/mp01/node1/mp01.doc
testsuites/mptests/mp01/node1/mp01.scn
testsuites/mptests/mp01/node2/mp01.doc
testsuites/mptests/mp01/node2/mp01.scn
testsuites/mptests/mp01/system.h
testsuites/mptests/mp01/task1.c
testsuites/mptests/mp02/init.c
testsuites/mptests/mp02/node1/mp02.doc
testsuites/mptests/mp02/node1/mp02.scn
testsuites/mptests/mp02/node2/mp02.doc
testsuites/mptests/mp02/node2/mp02.scn
testsuites/mptests/mp02/system.h
testsuites/mptests/mp02/task1.c
testsuites/mptests/mp03/delay.c
testsuites/mptests/mp03/init.c
testsuites/mptests/mp03/node1/mp03.doc
testsuites/mptests/mp03/node1/mp03.scn
testsuites/mptests/mp03/node2/mp03.doc
testsuites/mptests/mp03/node2/mp03.scn
testsuites/mptests/mp03/system.h
testsuites/mptests/mp03/task1.c
testsuites/mptests/mp04/init.c
testsuites/mptests/mp04/node1/mp04.doc
testsuites/mptests/mp04/node1/mp04.scn
testsuites/mptests/mp04/node2/mp04.doc
testsuites/mptests/mp04/node2/mp04.scn
testsuites/mptests/mp04/system.h
testsuites/mptests/mp04/task1.c
testsuites/mptests/mp05/asr.c
testsuites/mptests/mp05/init.c
testsuites/mptests/mp05/node1/mp05.doc
testsuites/mptests/mp05/node1/mp05.scn
testsuites/mptests/mp05/node2/mp05.doc
testsuites/mptests/mp05/node2/mp05.scn
testsuites/mptests/mp05/system.h
testsuites/mptests/mp05/task1.c
testsuites/mptests/mp06/init.c
testsuites/mptests/mp06/node1/mp06.doc
testsuites/mptests/mp06/node1/mp06.scn
testsuites/mptests/mp06/node2/mp06.doc
testsuites/mptests/mp06/node2/mp06.scn
testsuites/mptests/mp06/system.h
testsuites/mptests/mp06/task1.c
testsuites/mptests/mp07/init.c
testsuites/mptests/mp07/node1/mp07.doc
testsuites/mptests/mp07/node1/mp07.scn
testsuites/mptests/mp07/node2/mp07.doc
testsuites/mptests/mp07/node2/mp07.scn
testsuites/mptests/mp07/system.h
testsuites/mptests/mp07/task1.c
testsuites/mptests/mp08/init.c
testsuites/mptests/mp08/node1/mp08.doc
testsuites/mptests/mp08/node1/mp08.scn
testsuites/mptests/mp08/node2/mp08.doc
testsuites/mptests/mp08/node2/mp08.scn
testsuites/mptests/mp08/system.h
testsuites/mptests/mp08/task1.c
testsuites/mptests/mp09/init.c
testsuites/mptests/mp09/node1/mp09.doc
testsuites/mptests/mp09/node1/mp09.scn
testsuites/mptests/mp09/node2/mp09.doc
testsuites/mptests/mp09/node2/mp09.scn
testsuites/mptests/mp09/recvmsg.c
testsuites/mptests/mp09/sendmsg.c
testsuites/mptests/mp09/system.h
testsuites/mptests/mp09/task1.c
testsuites/mptests/mp10/init.c
testsuites/mptests/mp10/node1/mp10.doc
testsuites/mptests/mp10/node1/mp10.scn
testsuites/mptests/mp10/node2/mp10.doc
testsuites/mptests/mp10/node2/mp10.scn
testsuites/mptests/mp10/system.h
testsuites/mptests/mp10/task1.c
testsuites/mptests/mp10/task2.c
testsuites/mptests/mp10/task3.c
testsuites/mptests/mp11/init.c
testsuites/mptests/mp11/node1/mp11.doc
testsuites/mptests/mp11/node1/mp11.scn
testsuites/mptests/mp11/node2/mp11.doc
testsuites/mptests/mp11/node2/mp11.scn
testsuites/mptests/mp11/system.h
testsuites/mptests/mp12/init.c
testsuites/mptests/mp12/node1/mp12.doc
testsuites/mptests/mp12/node1/mp12.scn
testsuites/mptests/mp12/node2/mp12.doc
testsuites/mptests/mp12/node2/mp12.scn
testsuites/mptests/mp12/system.h
testsuites/mptests/mp13/init.c
testsuites/mptests/mp13/node1/mp13.doc
testsuites/mptests/mp13/node1/mp13.scn
testsuites/mptests/mp13/node2/mp13.doc
testsuites/mptests/mp13/node2/mp13.scn
testsuites/mptests/mp13/system.h
testsuites/mptests/mp13/task1.c
testsuites/mptests/mp13/task2.c
testsuites/mptests/mp14/delay.c
testsuites/mptests/mp14/evtask1.c
testsuites/mptests/mp14/evtmtask.c
testsuites/mptests/mp14/exit.c
testsuites/mptests/mp14/init.c
testsuites/mptests/mp14/msgtask1.c
testsuites/mptests/mp14/node1/mp14.doc
testsuites/mptests/mp14/node1/mp14.scn
testsuites/mptests/mp14/node2/mp14.doc
testsuites/mptests/mp14/node2/mp14.scn
testsuites/mptests/mp14/pttask1.c
testsuites/mptests/mp14/smtask1.c
testsuites/mptests/mp14/system.h
testsuites/psxtests/include/pmacros.h
testsuites/psxtests/psx01/init.c
testsuites/psxtests/psx01/psx01.scn
testsuites/psxtests/psx01/system.h
testsuites/psxtests/psx01/task.c
testsuites/psxtests/psx02/init.c
testsuites/psxtests/psx02/psx02.scn
testsuites/psxtests/psx02/system.h
testsuites/psxtests/psx02/task.c
testsuites/psxtests/psx03/init.c
testsuites/psxtests/psx03/psx03.scn
testsuites/psxtests/psx03/system.h
testsuites/psxtests/psx03/task.c
testsuites/psxtests/psx04/init.c
testsuites/psxtests/psx04/psx04.scn
testsuites/psxtests/psx04/system.h
testsuites/psxtests/psx04/task1.c
testsuites/psxtests/psx04/task2.c
testsuites/psxtests/psx04/task3.c
testsuites/psxtests/psx05/init.c
testsuites/psxtests/psx05/psx05.scn
testsuites/psxtests/psx05/system.h
testsuites/psxtests/psx05/task.c
testsuites/psxtests/psx05/task2.c
testsuites/psxtests/psx05/task3.c
testsuites/psxtests/psx06/init.c
testsuites/psxtests/psx06/psx06.scn
testsuites/psxtests/psx06/system.h
testsuites/psxtests/psx06/task.c
testsuites/psxtests/psx06/task2.c
testsuites/psxtests/psx07/init.c
testsuites/psxtests/psx07/psx07.scn
testsuites/psxtests/psx07/system.h
testsuites/psxtests/psx07/task.c
testsuites/psxtests/psx08/init.c
testsuites/psxtests/psx08/psx08.scn
testsuites/psxtests/psx08/system.h
testsuites/psxtests/psx08/task2.c
testsuites/psxtests/psx09/init.c
testsuites/psxtests/psx09/psx09.scn
testsuites/psxtests/psx09/system.h
testsuites/psxtests/psx10/init.c
testsuites/psxtests/psx10/psx10.scn
testsuites/psxtests/psx10/system.h
testsuites/psxtests/psx10/task.c
testsuites/psxtests/psx10/task2.c
testsuites/psxtests/psx10/task3.c
testsuites/psxtests/psx11/init.c
testsuites/psxtests/psx11/psx11.scn
testsuites/psxtests/psx11/system.h
testsuites/psxtests/psx11/task.c
testsuites/psxtests/psx12/init.c
testsuites/psxtests/psx12/psx12.scn
testsuites/psxtests/psx12/system.h
testsuites/psxtests/psx12/task.c
testsuites/psxtests/psxhdrs/clock01.c
testsuites/psxtests/psxhdrs/clock02.c
testsuites/psxtests/psxhdrs/clock03.c
testsuites/psxtests/psxhdrs/clock04.c
testsuites/psxtests/psxhdrs/clock05.c
testsuites/psxtests/psxhdrs/clock06.c
testsuites/psxtests/psxhdrs/cond01.c
testsuites/psxtests/psxhdrs/cond02.c
testsuites/psxtests/psxhdrs/cond03.c
testsuites/psxtests/psxhdrs/cond04.c
testsuites/psxtests/psxhdrs/cond05.c
testsuites/psxtests/psxhdrs/cond06.c
testsuites/psxtests/psxhdrs/cond07.c
testsuites/psxtests/psxhdrs/cond08.c
testsuites/psxtests/psxhdrs/cond09.c
testsuites/psxtests/psxhdrs/cond10.c
testsuites/psxtests/psxhdrs/key01.c
testsuites/psxtests/psxhdrs/key02.c
testsuites/psxtests/psxhdrs/key03.c
testsuites/psxtests/psxhdrs/key04.c
testsuites/psxtests/psxhdrs/mutex01.c
testsuites/psxtests/psxhdrs/mutex02.c
testsuites/psxtests/psxhdrs/mutex03.c
testsuites/psxtests/psxhdrs/mutex04.c
testsuites/psxtests/psxhdrs/mutex05.c
testsuites/psxtests/psxhdrs/mutex06.c
testsuites/psxtests/psxhdrs/mutex07.c
testsuites/psxtests/psxhdrs/mutex08.c
testsuites/psxtests/psxhdrs/mutex09.c
testsuites/psxtests/psxhdrs/mutex10.c
testsuites/psxtests/psxhdrs/mutex11.c
testsuites/psxtests/psxhdrs/mutex12.c
testsuites/psxtests/psxhdrs/mutex13.c
testsuites/psxtests/psxhdrs/mutex14.c
testsuites/psxtests/psxhdrs/mutex15.c
testsuites/psxtests/psxhdrs/mutex16.c
testsuites/psxtests/psxhdrs/proc01.c
testsuites/psxtests/psxhdrs/proc02.c
testsuites/psxtests/psxhdrs/proc03.c
testsuites/psxtests/psxhdrs/proc04.c
testsuites/psxtests/psxhdrs/proc05.c
testsuites/psxtests/psxhdrs/proc06.c
testsuites/psxtests/psxhdrs/proc07.c
testsuites/psxtests/psxhdrs/proc08.c
testsuites/psxtests/psxhdrs/proc09.c
testsuites/psxtests/psxhdrs/proc10.c
testsuites/psxtests/psxhdrs/proc11.c
testsuites/psxtests/psxhdrs/proc12.c
testsuites/psxtests/psxhdrs/proc13.c
testsuites/psxtests/psxhdrs/proc14.c
testsuites/psxtests/psxhdrs/pthread01.c
testsuites/psxtests/psxhdrs/pthread02.c
testsuites/psxtests/psxhdrs/pthread03.c
testsuites/psxtests/psxhdrs/pthread04.c
testsuites/psxtests/psxhdrs/pthread05.c
testsuites/psxtests/psxhdrs/pthread06.c
testsuites/psxtests/psxhdrs/pthread07.c
testsuites/psxtests/psxhdrs/pthread08.c
testsuites/psxtests/psxhdrs/pthread09.c
testsuites/psxtests/psxhdrs/pthread10.c
testsuites/psxtests/psxhdrs/pthread11.c
testsuites/psxtests/psxhdrs/pthread12.c
testsuites/psxtests/psxhdrs/pthread13.c
testsuites/psxtests/psxhdrs/pthread14.c
testsuites/psxtests/psxhdrs/pthread15.c
testsuites/psxtests/psxhdrs/pthread16.c
testsuites/psxtests/psxhdrs/pthread17.c
testsuites/psxtests/psxhdrs/pthread18.c
testsuites/psxtests/psxhdrs/pthread19.c
testsuites/psxtests/psxhdrs/pthread20.c
testsuites/psxtests/psxhdrs/pthread21.c
testsuites/psxtests/psxhdrs/pthread22.c
testsuites/psxtests/psxhdrs/pthread23.c
testsuites/psxtests/psxhdrs/pthread24.c
testsuites/psxtests/psxhdrs/pthread25.c
testsuites/psxtests/psxhdrs/pthread26.c
testsuites/psxtests/psxhdrs/pthread27.c
testsuites/psxtests/psxhdrs/pthread28.c
testsuites/psxtests/psxhdrs/pthread29.c
testsuites/psxtests/psxhdrs/pthread30.c
testsuites/psxtests/psxhdrs/pthread31.c
testsuites/psxtests/psxhdrs/pthread32.c
testsuites/psxtests/psxhdrs/pthread33.c
testsuites/psxtests/psxhdrs/pthread34.c
testsuites/psxtests/psxhdrs/pthread35.c
testsuites/psxtests/psxhdrs/pthread36.c
testsuites/psxtests/psxhdrs/sched01.c
testsuites/psxtests/psxhdrs/sched02.c
testsuites/psxtests/psxhdrs/sched03.c
testsuites/psxtests/psxhdrs/sched04.c
testsuites/psxtests/psxhdrs/sched05.c
testsuites/psxtests/psxhdrs/sched06.c
testsuites/psxtests/psxhdrs/sched07.c
testsuites/psxtests/psxhdrs/sched08.c
testsuites/psxtests/psxhdrs/signal01.c
testsuites/psxtests/psxhdrs/signal02.c
testsuites/psxtests/psxhdrs/signal03.c
testsuites/psxtests/psxhdrs/signal04.c
testsuites/psxtests/psxhdrs/signal05.c
testsuites/psxtests/psxhdrs/signal06.c
testsuites/psxtests/psxhdrs/signal07.c
testsuites/psxtests/psxhdrs/signal08.c
testsuites/psxtests/psxhdrs/signal09.c
testsuites/psxtests/psxhdrs/signal10.c
testsuites/psxtests/psxhdrs/signal11.c
testsuites/psxtests/psxhdrs/signal12.c
testsuites/psxtests/psxhdrs/signal13.c
testsuites/psxtests/psxhdrs/signal14.c
testsuites/psxtests/psxhdrs/signal15.c
testsuites/psxtests/psxhdrs/signal16.c
testsuites/psxtests/psxhdrs/signal17.c
testsuites/psxtests/psxhdrs/signal18.c
testsuites/psxtests/psxhdrs/signal19.c
testsuites/psxtests/psxhdrs/signal20.c
testsuites/psxtests/psxhdrs/signal21.c
testsuites/psxtests/psxhdrs/signal22.c
testsuites/psxtests/psxhdrs/time01.c
testsuites/psxtests/psxhdrs/time02.c
testsuites/psxtests/psxhdrs/time03.c
testsuites/psxtests/psxhdrs/time04.c
testsuites/psxtests/psxhdrs/time05.c
testsuites/psxtests/psxhdrs/time06.c
testsuites/psxtests/psxhdrs/time07.c
testsuites/psxtests/psxhdrs/time08.c
testsuites/psxtests/psxhdrs/time09.c
testsuites/psxtests/psxhdrs/time10.c
testsuites/psxtests/psxhdrs/time11.c
testsuites/psxtests/psxhdrs/time12.c
testsuites/psxtests/psxhdrs/time13.c
testsuites/psxtests/psxhdrs/timer01.c
testsuites/psxtests/psxhdrs/timer02.c
testsuites/psxtests/psxhdrs/timer03.c
testsuites/psxtests/psxhdrs/timer04.c
testsuites/psxtests/psxhdrs/timer05.c
testsuites/psxtests/psxhdrs/timer06.c
testsuites/samples/README
testsuites/samples/base_mp/apptask.c
testsuites/samples/base_mp/init.c
testsuites/samples/base_mp/node1/base_mp.doc
testsuites/samples/base_mp/node1/base_mp.scn
testsuites/samples/base_mp/node2/base_mp.doc
testsuites/samples/base_mp/node2/base_mp.scn
testsuites/samples/base_mp/system.h
testsuites/samples/base_sp/apptask.c
testsuites/samples/base_sp/base_sp.doc
testsuites/samples/base_sp/base_sp.scn
testsuites/samples/base_sp/init.c
testsuites/samples/base_sp/system.h
testsuites/samples/cdtest/cdtest.scn
testsuites/samples/cdtest/init.c
testsuites/samples/cdtest/main.cc
testsuites/samples/cdtest/system.h
testsuites/samples/hello/hello.doc
testsuites/samples/hello/hello.scn
testsuites/samples/hello/init.c
testsuites/samples/hello/system.h
testsuites/samples/paranoia/init.c
testsuites/samples/paranoia/paranoia.c
testsuites/samples/paranoia/paranoia.doc
testsuites/samples/paranoia/system.h
testsuites/samples/ticker/init.c
testsuites/samples/ticker/system.h
testsuites/samples/ticker/tasks.c
testsuites/samples/ticker/ticker.doc
testsuites/samples/ticker/ticker.scn
testsuites/sptests/README
testsuites/sptests/sp01/init.c
testsuites/sptests/sp01/sp01.doc
testsuites/sptests/sp01/sp01.scn
testsuites/sptests/sp01/system.h
testsuites/sptests/sp01/task1.c
testsuites/sptests/sp02/init.c
testsuites/sptests/sp02/preempt.c
testsuites/sptests/sp02/sp02.doc
testsuites/sptests/sp02/sp02.scn
testsuites/sptests/sp02/system.h
testsuites/sptests/sp02/task1.c
testsuites/sptests/sp02/task2.c
testsuites/sptests/sp02/task3.c
testsuites/sptests/sp03/init.c
testsuites/sptests/sp03/sp03.doc
testsuites/sptests/sp03/sp03.scn
testsuites/sptests/sp03/system.h
testsuites/sptests/sp03/task1.c
testsuites/sptests/sp03/task2.c
testsuites/sptests/sp04/init.c
testsuites/sptests/sp04/sp04.doc
testsuites/sptests/sp04/sp04.scn
testsuites/sptests/sp04/system.h
testsuites/sptests/sp04/task1.c
testsuites/sptests/sp04/task2.c
testsuites/sptests/sp04/task3.c
testsuites/sptests/sp04/tswitch.c
testsuites/sptests/sp05/init.c
testsuites/sptests/sp05/sp05.doc
testsuites/sptests/sp05/sp05.scn
testsuites/sptests/sp05/system.h
testsuites/sptests/sp05/task1.c
testsuites/sptests/sp05/task2.c
testsuites/sptests/sp05/task3.c
testsuites/sptests/sp06/init.c
testsuites/sptests/sp06/sp06.doc
testsuites/sptests/sp06/sp06.scn
testsuites/sptests/sp06/system.h
testsuites/sptests/sp06/task1.c
testsuites/sptests/sp06/task2.c
testsuites/sptests/sp06/task3.c
testsuites/sptests/sp07/init.c
testsuites/sptests/sp07/sp07.doc
testsuites/sptests/sp07/sp07.scn
testsuites/sptests/sp07/system.h
testsuites/sptests/sp07/task1.c
testsuites/sptests/sp07/task2.c
testsuites/sptests/sp07/task3.c
testsuites/sptests/sp07/task4.c
testsuites/sptests/sp07/taskexit.c
testsuites/sptests/sp07/tcreate.c
testsuites/sptests/sp07/tdelete.c
testsuites/sptests/sp07/trestart.c
testsuites/sptests/sp07/tstart.c
testsuites/sptests/sp08/init.c
testsuites/sptests/sp08/sp08.doc
testsuites/sptests/sp08/sp08.scn
testsuites/sptests/sp08/system.h
testsuites/sptests/sp08/task1.c
testsuites/sptests/sp09/delay.c
testsuites/sptests/sp09/init.c
testsuites/sptests/sp09/isr.c
testsuites/sptests/sp09/screen01.c
testsuites/sptests/sp09/screen02.c
testsuites/sptests/sp09/screen03.c
testsuites/sptests/sp09/screen04.c
testsuites/sptests/sp09/screen05.c
testsuites/sptests/sp09/screen06.c
testsuites/sptests/sp09/screen07.c
testsuites/sptests/sp09/screen08.c
testsuites/sptests/sp09/screen09.c
testsuites/sptests/sp09/screen10.c
testsuites/sptests/sp09/screen11.c
testsuites/sptests/sp09/screen12.c
testsuites/sptests/sp09/screen13.c
testsuites/sptests/sp09/screen14.c
testsuites/sptests/sp09/sp09.doc
testsuites/sptests/sp09/sp09.scn
testsuites/sptests/sp09/system.h
testsuites/sptests/sp09/task1.c
testsuites/sptests/sp09/task2.c
testsuites/sptests/sp09/task3.c
testsuites/sptests/sp09/task4.c
testsuites/sptests/sp11/init.c
testsuites/sptests/sp11/sp11.doc
testsuites/sptests/sp11/sp11.scn
testsuites/sptests/sp11/system.h
testsuites/sptests/sp11/task1.c
testsuites/sptests/sp11/task2.c
testsuites/sptests/sp11/timer.c
testsuites/sptests/sp12/init.c
testsuites/sptests/sp12/pridrv.c
testsuites/sptests/sp12/pritask.c
testsuites/sptests/sp12/sp12.doc
testsuites/sptests/sp12/sp12.scn
testsuites/sptests/sp12/system.h
testsuites/sptests/sp12/task1.c
testsuites/sptests/sp12/task2.c
testsuites/sptests/sp12/task3.c
testsuites/sptests/sp12/task4.c
testsuites/sptests/sp12/task5.c
testsuites/sptests/sp13/fillbuff.c
testsuites/sptests/sp13/init.c
testsuites/sptests/sp13/putbuff.c
testsuites/sptests/sp13/sp13.doc
testsuites/sptests/sp13/sp13.scn
testsuites/sptests/sp13/system.h
testsuites/sptests/sp13/task1.c
testsuites/sptests/sp13/task2.c
testsuites/sptests/sp13/task3.c
testsuites/sptests/sp14/asr.c
testsuites/sptests/sp14/init.c
testsuites/sptests/sp14/sp14.doc
testsuites/sptests/sp14/sp14.scn
testsuites/sptests/sp14/system.h
testsuites/sptests/sp14/task1.c
testsuites/sptests/sp14/task2.c
testsuites/sptests/sp15/init.c
testsuites/sptests/sp15/sp15.doc
testsuites/sptests/sp15/sp15.scn
testsuites/sptests/sp15/system.h
testsuites/sptests/sp15/task1.c
testsuites/sptests/sp16/init.c
testsuites/sptests/sp16/sp16.doc
testsuites/sptests/sp16/sp16.scn
testsuites/sptests/sp16/system.h
testsuites/sptests/sp16/task1.c
testsuites/sptests/sp16/task2.c
testsuites/sptests/sp16/task3.c
testsuites/sptests/sp16/task4.c
testsuites/sptests/sp16/task5.c
testsuites/sptests/sp17/asr.c
testsuites/sptests/sp17/init.c
testsuites/sptests/sp17/sp17.doc
testsuites/sptests/sp17/sp17.scn
testsuites/sptests/sp17/system.h
testsuites/sptests/sp17/task1.c
testsuites/sptests/sp17/task2.c
testsuites/sptests/sp19/first.c
testsuites/sptests/sp19/fptask.c
testsuites/sptests/sp19/fptest.h
testsuites/sptests/sp19/init.c
testsuites/sptests/sp19/inttest.h
testsuites/sptests/sp19/sp19.doc
testsuites/sptests/sp19/sp19.scn
testsuites/sptests/sp19/system.h
testsuites/sptests/sp19/task1.c
testsuites/sptests/sp20/getall.c
testsuites/sptests/sp20/init.c
testsuites/sptests/sp20/sp20.doc
testsuites/sptests/sp20/sp20.scn
testsuites/sptests/sp20/system.h
testsuites/sptests/sp20/task1.c
testsuites/sptests/sp21/init.c
testsuites/sptests/sp21/sp21.doc
testsuites/sptests/sp21/sp21.scn
testsuites/sptests/sp21/system.h
testsuites/sptests/sp21/task1.c
testsuites/sptests/sp22/delay.c
testsuites/sptests/sp22/init.c
testsuites/sptests/sp22/prtime.c
testsuites/sptests/sp22/sp22.doc
testsuites/sptests/sp22/sp22.scn
testsuites/sptests/sp22/system.h
testsuites/sptests/sp22/task1.c
testsuites/sptests/sp23/init.c
testsuites/sptests/sp23/sp23.doc
testsuites/sptests/sp23/sp23.scn
testsuites/sptests/sp23/system.h
testsuites/sptests/sp23/task1.c
testsuites/sptests/sp24/init.c
testsuites/sptests/sp24/resume.c
testsuites/sptests/sp24/sp24.doc
testsuites/sptests/sp24/sp24.scn
testsuites/sptests/sp24/system.h
testsuites/sptests/sp24/task1.c
testsuites/sptests/sp25/init.c
testsuites/sptests/sp25/sp25.doc
testsuites/sptests/sp25/sp25.scn
testsuites/sptests/sp25/system.h
testsuites/sptests/sp25/task1.c
testsuites/sptests/spfatal/fatal.c
testsuites/sptests/spfatal/init.c
testsuites/sptests/spfatal/puterr.c
testsuites/sptests/spfatal/spfatal.doc
testsuites/sptests/spfatal/spfatal.scn
testsuites/sptests/spfatal/system.h
testsuites/sptests/spfatal/task1.c
testsuites/sptests/spsize/getint.c
testsuites/sptests/spsize/init.c
testsuites/sptests/spsize/size.c
testsuites/sptests/spsize/system.h
testsuites/support/include/tmacros.h
testsuites/tmtests/README
testsuites/tmtests/include/timesys.h
testsuites/tmtests/tm01/system.h
testsuites/tmtests/tm01/task1.c
testsuites/tmtests/tm01/tm01.doc
testsuites/tmtests/tm02/system.h
testsuites/tmtests/tm02/task1.c
testsuites/tmtests/tm02/tm02.doc
testsuites/tmtests/tm03/system.h
testsuites/tmtests/tm03/task1.c
testsuites/tmtests/tm03/tm03.doc
testsuites/tmtests/tm04/system.h
testsuites/tmtests/tm04/task1.c
testsuites/tmtests/tm04/tm04.doc
testsuites/tmtests/tm05/system.h
testsuites/tmtests/tm05/task1.c
testsuites/tmtests/tm05/tm05.doc
testsuites/tmtests/tm06/system.h
testsuites/tmtests/tm06/task1.c
testsuites/tmtests/tm06/tm06.doc
testsuites/tmtests/tm07/system.h
testsuites/tmtests/tm07/task1.c
testsuites/tmtests/tm07/tm07.doc
testsuites/tmtests/tm08/system.h
testsuites/tmtests/tm08/task1.c
testsuites/tmtests/tm08/tm08.doc
testsuites/tmtests/tm09/system.h
testsuites/tmtests/tm09/task1.c
testsuites/tmtests/tm09/tm09.doc
testsuites/tmtests/tm10/system.h
testsuites/tmtests/tm10/task1.c
testsuites/tmtests/tm10/tm10.doc
testsuites/tmtests/tm11/system.h
testsuites/tmtests/tm11/task1.c
testsuites/tmtests/tm11/tm11.doc
testsuites/tmtests/tm12/system.h
testsuites/tmtests/tm12/task1.c
testsuites/tmtests/tm12/tm12.doc
testsuites/tmtests/tm13/system.h
testsuites/tmtests/tm13/task1.c
testsuites/tmtests/tm13/tm13.doc
testsuites/tmtests/tm14/system.h
testsuites/tmtests/tm14/task1.c
testsuites/tmtests/tm14/tm14.doc
testsuites/tmtests/tm15/system.h
testsuites/tmtests/tm15/task1.c
testsuites/tmtests/tm15/tm15.doc
testsuites/tmtests/tm16/system.h
testsuites/tmtests/tm16/task1.c
testsuites/tmtests/tm16/tm16.doc
testsuites/tmtests/tm17/system.h
testsuites/tmtests/tm17/task1.c
testsuites/tmtests/tm17/tm17.doc
testsuites/tmtests/tm18/system.h
testsuites/tmtests/tm18/task1.c
testsuites/tmtests/tm18/tm18.doc
testsuites/tmtests/tm19/system.h
testsuites/tmtests/tm19/task1.c
testsuites/tmtests/tm19/tm19.doc
testsuites/tmtests/tm20/system.h
testsuites/tmtests/tm20/task1.c
testsuites/tmtests/tm20/tm20.doc
testsuites/tmtests/tm21/system.h
testsuites/tmtests/tm21/task1.c
testsuites/tmtests/tm21/tm21.doc
testsuites/tmtests/tm22/system.h
testsuites/tmtests/tm22/task1.c
testsuites/tmtests/tm22/tm22.doc
testsuites/tmtests/tm23/system.h
testsuites/tmtests/tm23/task1.c
testsuites/tmtests/tm23/tm23.doc
testsuites/tmtests/tm24/system.h
testsuites/tmtests/tm24/task1.c
testsuites/tmtests/tm24/tm24.doc
testsuites/tmtests/tm25/system.h
testsuites/tmtests/tm25/task1.c
testsuites/tmtests/tm25/tm25.doc
testsuites/tmtests/tm26/fptest.h
testsuites/tmtests/tm26/system.h
testsuites/tmtests/tm26/task1.c
testsuites/tmtests/tm26/tm26.doc
testsuites/tmtests/tm27/system.h
testsuites/tmtests/tm27/task1.c
testsuites/tmtests/tm27/tm27.doc
testsuites/tmtests/tm28/system.h
testsuites/tmtests/tm28/task1.c
testsuites/tmtests/tm28/tm28.doc
testsuites/tmtests/tm29/system.h
testsuites/tmtests/tm29/task1.c
testsuites/tmtests/tm29/tm29.doc
testsuites/tmtests/tmck/system.h
testsuites/tmtests/tmck/task1.c
testsuites/tmtests/tmck/tmck.doc
testsuites/tmtests/tmoverhd/dumrtems.h
testsuites/tmtests/tmoverhd/empty.c
testsuites/tmtests/tmoverhd/system.h
testsuites/tmtests/tmoverhd/testtask.c
testsuites/tmtests/tmoverhd/tmoverhd.doc
tools/build/README
tools/build/cklength.c
tools/build/eolstrip.c
tools/build/os/msdos/README
tools/build/os/msdos/cklength.uue
tools/build/os/msdos/fixtimer.c
tools/build/os/msdos/fixtimer.uue
tools/build/os/msdos/ifc.c
tools/build/os/msdos/ifc_exe.uue
tools/build/packhex.c
tools/build/scripts/README
tools/build/src/cklength.c
tools/build/src/eolstrip.c
tools/build/src/packhex.c
tools/build/src/unhex.c
tools/build/unhex.c
tools/cpu/hppa1.1/genoffsets.c
tools/cpu/unix/gensize.c
tools/update/310_to_320_list
tools/update/README
Diffstat (limited to 'cpukit/posix/src/psignal.c')
-rw-r--r-- | cpukit/posix/src/psignal.c | 1347 |
1 files changed, 0 insertions, 1347 deletions
diff --git a/cpukit/posix/src/psignal.c b/cpukit/posix/src/psignal.c deleted file mode 100644 index 289c9f02d5..0000000000 --- a/cpukit/posix/src/psignal.c +++ /dev/null @@ -1,1347 +0,0 @@ -/* - * $Id$ - */ - -#include <assert.h> -#include <errno.h> -#include <pthread.h> -#include <signal.h> - -#include <rtems/system.h> -#include <rtems/score/isr.h> -#include <rtems/score/thread.h> -#include <rtems/score/tqdata.h> -#include <rtems/score/wkspace.h> -#include <rtems/posix/seterr.h> -#include <rtems/posix/threadsup.h> -#include <rtems/posix/pthread.h> -#include <rtems/posix/time.h> - -/* - * Currently 32 signals numbered 1-32 are defined - */ - -#define SIGNAL_EMPTY_MASK 0x00000000 -#define SIGNAL_ALL_MASK 0xffffffff - -#define signo_to_mask( _sig ) (1 << ((_sig) - 1)) - -#define is_valid_signo( _sig ) \ - ((_sig) >= 1 && (_sig) <= 32 ) - -/*** PROCESS WIDE STUFF ****/ - -sigset_t _POSIX_signals_Pending; - -void _POSIX_signals_Abormal_termination_handler( int signo ) -{ - exit( 1 ); -} - -#define _POSIX_signals_Stop_handler NULL -#define _POSIX_signals_Continue_handler NULL - -#define SIGACTION_TERMINATE \ - { 0, SIGNAL_ALL_MASK, {_POSIX_signals_Abormal_termination_handler} } -#define SIGACTION_IGNORE \ - { 0, SIGNAL_ALL_MASK, {SIG_IGN} } -#define SIGACTION_STOP \ - { 0, SIGNAL_ALL_MASK, {_POSIX_signals_Stop_handler} } -#define SIGACTION_CONTINUE \ - { 0, SIGNAL_ALL_MASK, {_POSIX_signals_Continue_handler} } - -#define SIG_ARRAY_MAX (SIGRTMAX + 1) -struct sigaction _POSIX_signals_Default_vectors[ SIG_ARRAY_MAX ] = { - /* NO SIGNAL 0 */ SIGACTION_IGNORE, - /* SIGHUP 1 */ SIGACTION_TERMINATE, - /* SIGINT 2 */ SIGACTION_TERMINATE, - /* SIGQUIT 3 */ SIGACTION_TERMINATE, - /* SIGILL 4 */ SIGACTION_TERMINATE, - /* SIGTRAP 5 */ SIGACTION_TERMINATE, - /* SIGIOT 6 */ SIGACTION_TERMINATE, - /* SIGABRT 6 SIGACTION_TERMINATE, -- alias for SIGIOT */ - /* SIGEMT 7 */ SIGACTION_TERMINATE, - /* SIGFPE 8 */ SIGACTION_TERMINATE, - /* SIGKILL 9 */ SIGACTION_TERMINATE, - /* SIGBUS 10 */ SIGACTION_TERMINATE, - /* SIGSEGV 11 */ SIGACTION_TERMINATE, - /* SIGSYS 12 */ SIGACTION_TERMINATE, - /* SIGPIPE 13 */ SIGACTION_TERMINATE, - /* SIGALRM 14 */ SIGACTION_TERMINATE, - /* SIGTERM 15 */ SIGACTION_TERMINATE, - /* SIGUSR1 16 */ SIGACTION_TERMINATE, - /* SIGUSR2 17 */ SIGACTION_TERMINATE, - /* SIGRTMIN 18 */ SIGACTION_IGNORE, - /* SIGRT 19 */ SIGACTION_IGNORE, - /* SIGRT 20 */ SIGACTION_IGNORE, - /* SIGRT 21 */ SIGACTION_IGNORE, - /* SIGRT 22 */ SIGACTION_IGNORE, - /* SIGRT 23 */ SIGACTION_IGNORE, - /* SIGRT 24 */ SIGACTION_IGNORE, - /* SIGRT 25 */ SIGACTION_IGNORE, - /* SIGRT 26 */ SIGACTION_IGNORE, - /* SIGRT 27 */ SIGACTION_IGNORE, - /* SIGRT 28 */ SIGACTION_IGNORE, - /* SIGRT 29 */ SIGACTION_IGNORE, - /* SIGRT 30 */ SIGACTION_IGNORE, - /* SIGRT 31 */ SIGACTION_IGNORE, - /* SIGRTMAX 32 */ SIGACTION_IGNORE -}; - -struct sigaction _POSIX_signals_Vectors[ SIG_ARRAY_MAX ]; - -Watchdog_Control _POSIX_signals_Alarm_timer; - -Thread_queue_Control _POSIX_signals_Wait_queue; - -typedef struct { - Chain_Node Node; - siginfo_t Info; -} POSIX_signals_Siginfo_node; - -Chain_Control _POSIX_signals_Inactive_siginfo; -Chain_Control _POSIX_signals_Siginfo[ SIG_ARRAY_MAX ]; - -/*PAGE - * - * XXX - move these - */ - -#define _States_Is_interruptible_signal( _states ) \ - ( ((_states) & \ - (STATES_WAITING_FOR_SIGNAL|STATES_INTERRUPTIBLE_BY_SIGNAL)) == \ - (STATES_WAITING_FOR_SIGNAL|STATES_INTERRUPTIBLE_BY_SIGNAL)) - -/*PAGE - * - * _POSIX_signals_Unblock_thread - */ - -/* XXX this routine could probably be cleaned up */ -boolean _POSIX_signals_Unblock_thread( - Thread_Control *the_thread, - int signo, - siginfo_t *info -) -{ - POSIX_API_Control *api; - sigset_t mask; - siginfo_t *the_info = NULL; - - api = the_thread->API_Extensions[ THREAD_API_POSIX ]; - - mask = signo_to_mask( signo ); - - /* - * Is the thread is specifically waiting for a signal? - */ - - if ( _States_Is_interruptible_signal( the_thread->current_state ) ) { - - if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) { - the_thread->Wait.return_code = EINTR; - - the_info = (siginfo_t *) the_thread->Wait.return_argument; - - if ( !info ) { - the_info->si_signo = signo; - the_info->si_code = SI_USER; - the_info->si_value.sival_int = 0; - } else { - *the_info = *info; - } - - _Thread_queue_Extract_with_proxy( the_thread ); - return TRUE; - } - - /* - * This should only be reached via pthread_kill(). - */ - - return FALSE; - } - - if ( ~api->signals_blocked & mask ) { - the_thread->do_post_task_switch_extension = TRUE; - - if ( the_thread->current_state & STATES_INTERRUPTIBLE_BY_SIGNAL ) { - the_thread->Wait.return_code = EINTR; - if ( _States_Is_waiting_on_thread_queue(the_thread->current_state) ) - _Thread_queue_Extract_with_proxy( the_thread ); - else if ( _States_Is_delaying(the_thread->current_state)){ - if ( _Watchdog_Is_active( &the_thread->Timer ) ) - (void) _Watchdog_Remove( &the_thread->Timer ); - _Thread_Unblock( the_thread ); - } - } - } - return FALSE; - -} - -/*PAGE - * - * _POSIX_signals_Set_process_signals - */ - -void _POSIX_signals_Set_process_signals( - sigset_t mask -) -{ - ISR_Level level; - - _ISR_Disable( level ); - if ( !_POSIX_signals_Pending ) - _Thread_Do_post_task_switch_extension++; - _POSIX_signals_Pending |= mask; - _ISR_Enable( level ); -} - -/*PAGE - * - * _POSIX_signals_Clear_process_signals - */ - -void _POSIX_signals_Clear_process_signals( - sigset_t mask -) -{ - ISR_Level level; - - _ISR_Disable( level ); - _POSIX_signals_Pending &= ~mask; - if ( !_POSIX_signals_Pending ) - _Thread_Do_post_task_switch_extension--; - _ISR_Enable( level ); -} - -/*PAGE - * - * _POSIX_signals_Clear_signals - */ - -boolean _POSIX_signals_Clear_signals( - POSIX_API_Control *api, - int signo, - siginfo_t *info, - boolean is_global, - boolean check_blocked -) -{ - sigset_t mask; - sigset_t signals_blocked; - ISR_Level level; - boolean do_callout; - POSIX_signals_Siginfo_node *psiginfo; - - mask = signo_to_mask( signo ); - - do_callout = FALSE; - - /* set blocked signals based on if checking for them, SIGNAL_ALL_MASK - * insures that no signals are blocked and all are checked. - */ - - if ( check_blocked ) - signals_blocked = ~api->signals_blocked; - else - signals_blocked = SIGNAL_ALL_MASK; - - /* XXX this is not right for siginfo type signals yet */ - /* XXX since they can't be cleared the same way */ - - _ISR_Disable( level ); - if ( is_global ) { - if ( mask & (_POSIX_signals_Pending & signals_blocked) ) { - if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) { - psiginfo = (POSIX_signals_Siginfo_node *) - _Chain_Get_unprotected( &_POSIX_signals_Siginfo[ signo ] ); - if ( _Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) ) - _POSIX_signals_Clear_process_signals( mask ); - if ( psiginfo ) { - *info = psiginfo->Info; - _Chain_Append_unprotected( - &_POSIX_signals_Inactive_siginfo, - &psiginfo->Node - ); - } else - do_callout = FALSE; - } else - _POSIX_signals_Clear_process_signals( mask ); - do_callout = TRUE; - } - } else { - if ( mask & (api->signals_pending & signals_blocked) ) { - api->signals_pending &= ~mask; - do_callout = TRUE; - } - } - _ISR_Enable( level ); - return do_callout; -} - - -/*PAGE - * - * _POSIX_signals_Check_signal - */ - -boolean _POSIX_signals_Check_signal( - POSIX_API_Control *api, - int signo, - boolean is_global -) -{ - siginfo_t siginfo_struct; - sigset_t saved_signals_blocked; - - if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct, - is_global, TRUE ) ) - return FALSE; - - /* - * Since we made a union of these, only one test is necessary but this is - * safer. - */ - - assert( _POSIX_signals_Vectors[ signo ].sa_handler || - _POSIX_signals_Vectors[ signo ].sa_sigaction ); - - /* - * Just to prevent sending a signal which is currently being ignored. - */ - - if ( _POSIX_signals_Vectors[ signo ].sa_handler == SIG_IGN ) - return FALSE; - - /* - * Block the signals requested in sa_mask - */ - - saved_signals_blocked = api->signals_blocked; - api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask; - - switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) { - case SA_SIGINFO: - assert( is_global ); - - (*_POSIX_signals_Vectors[ signo ].sa_sigaction)( - signo, - &siginfo_struct, - NULL /* context is undefined per 1003.1b-1993, p. 66 */ - ); - break; - default: - (*_POSIX_signals_Vectors[ signo ].sa_handler)( signo ); - break; - } - - /* - * Restore the previous set of blocked signals - */ - - api->signals_blocked = saved_signals_blocked; - - return TRUE; -} - -void _POSIX_signals_Post_switch_extension( - Thread_Control *the_thread -) -{ - POSIX_API_Control *api; - int signo; - ISR_Level level; - - api = the_thread->API_Extensions[ THREAD_API_POSIX ]; - - /* - * If we invoke any user code, there is the possibility that - * a new signal has been posted that we should process so we - * restart the loop if a signal handler was invoked. - * - * The first thing done is to check there are any signals to be - * processed at all. No point in doing this loop otherwise. - */ - -restart: - _ISR_Disable( level ); - if ( !(~api->signals_blocked & - (api->signals_pending | _POSIX_signals_Pending)) ) { - _ISR_Enable( level ); - return; - } - _ISR_Enable( level ); - - for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { - - if ( _POSIX_signals_Check_signal( api, signo, FALSE ) ) - goto restart; - - if ( _POSIX_signals_Check_signal( api, signo, TRUE ) ) - goto restart; - - } - -/* XXX - add __SIGFIRSTNOTRT or something like that to newlib siginfo.h */ - - for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { - - if ( _POSIX_signals_Check_signal( api, signo, FALSE ) ) - goto restart; - - if ( _POSIX_signals_Check_signal( api, signo, TRUE ) ) - goto restart; - - } - -} - -/*PAGE - * - * _POSIX_signals_Alarm_TSR - */ - -void _POSIX_signals_Alarm_TSR( - Objects_Id id, - void *argument -) -{ - int status; - - status = kill( getpid(), SIGALRM ); - /* XXX can't print from an ISR, should this be fatal? */ - assert( !status ); -} - -/*PAGE - * - * _POSIX_signals_Manager_Initialization - */ - -void _POSIX_signals_Manager_Initialization( - int maximum_queued_signals -) -{ - unsigned32 signo; - - /* - * Insure we have the same number of vectors and default vector entries - */ - - assert( - sizeof(_POSIX_signals_Vectors) == sizeof(_POSIX_signals_Default_vectors) - ); - - memcpy( - _POSIX_signals_Vectors, - _POSIX_signals_Default_vectors, - sizeof( _POSIX_signals_Vectors ) - ); - - /* - * Initialize the set of pending signals for the entire process - */ - - sigemptyset( &_POSIX_signals_Pending ); - - /* - * Initialize the timer used to implement alarm(). - */ - - _Watchdog_Initialize( - &_POSIX_signals_Alarm_timer, - _POSIX_signals_Alarm_TSR, - 0, - NULL - ); - - /* - * Initialize the queue we use to block for signals - */ - - _Thread_queue_Initialize( - &_POSIX_signals_Wait_queue, - OBJECTS_NO_CLASS, - THREAD_QUEUE_DISCIPLINE_PRIORITY, - STATES_WAITING_FOR_SIGNAL | STATES_INTERRUPTIBLE_BY_SIGNAL, - NULL, - EAGAIN - ); - - /* XXX status codes */ - - /* - * Allocate the siginfo pools. - */ - - for ( signo=1 ; signo<= SIGRTMAX ; signo++ ) - _Chain_Initialize_empty( &_POSIX_signals_Siginfo[ signo ] ); - - _Chain_Initialize( - &_POSIX_signals_Inactive_siginfo, - _Workspace_Allocate_or_fatal_error( - maximum_queued_signals * sizeof( POSIX_signals_Siginfo_node ) - ), - maximum_queued_signals, - sizeof( POSIX_signals_Siginfo_node ) - ); -} - -/* - * 3.3.3 Manipulate Signal Sets, P1003.1b-1993, p. 69 - */ - -int sigemptyset( - sigset_t *set -) -{ - if ( !set ) - set_errno_and_return_minus_one( EINVAL ); - - *set = 0; - return 0; -} - -/* - * 3.3.3 Manipulate Signal Sets, P1003.1b-1993, p. 69 - */ - -int sigfillset( - sigset_t *set -) -{ - if ( !set ) - set_errno_and_return_minus_one( EINVAL ); - - *set = SIGNAL_ALL_MASK; - return 0; -} - -/* - * 3.3.3 Manipulate Signal Sets, P1003.1b-1993, p. 69 - */ - -int sigaddset( - sigset_t *set, - int signo -) -{ - if ( !set ) - set_errno_and_return_minus_one( EINVAL ); - - if ( !signo ) - return 0; - - if ( !is_valid_signo(signo) ) - set_errno_and_return_minus_one( EINVAL ); - - *set |= signo_to_mask(signo); - return 0; -} - -/* - * 3.3.3 Manipulate Signal Sets, P1003.1b-1993, p. 69 - */ - -int sigdelset( - sigset_t *set, - int signo -) -{ - if ( !set ) - set_errno_and_return_minus_one( EINVAL ); - - if ( !signo ) - return 0; - - if ( !is_valid_signo(signo) ) - set_errno_and_return_minus_one( EINVAL ); - - *set &= ~signo_to_mask(signo); - return 0; -} - -/* - * 3.3.3 Manipulate Signal Sets, P1003.1b-1993, p. 69 - */ - -int sigismember( - const sigset_t *set, - int signo -) -{ - if ( !set ) - set_errno_and_return_minus_one( EINVAL ); - - if ( !signo ) - return 0; - - if ( !is_valid_signo(signo) ) - set_errno_and_return_minus_one( EINVAL ); - - if ( *set & signo_to_mask(signo) ) - return 1; - - return 0; -} - -/* - * 3.3.4 Examine and Change Signal Action, P1003.1b-1993, p. 70 - */ - -int sigaction( - int sig, - const struct sigaction *act, - struct sigaction *oact -) -{ - ISR_Level level; - - if ( oact ) - *oact = _POSIX_signals_Vectors[ sig ]; - - if ( !sig ) - return 0; - - if ( !is_valid_signo(sig) ) - set_errno_and_return_minus_one( EINVAL ); - - /* - * Some signals cannot be ignored (P1003.1b-1993, pp. 70-72 and references. - * - * NOTE: Solaris documentation claims to "silently enforce" this which - * contradicts the POSIX specification. - */ - - if ( sig == SIGKILL ) - set_errno_and_return_minus_one( EINVAL ); - - /* - * Evaluate the new action structure and set the global signal vector - * appropriately. - */ - - if ( act ) { - - /* - * Unless the user is installing the default signal actions, then - * we can just copy the provided sigaction structure into the vectors. - */ - - _ISR_Disable( level ); - if ( act->sa_handler == SIG_DFL ) { - _POSIX_signals_Vectors[ sig ] = _POSIX_signals_Default_vectors[ sig ]; - } else { - _POSIX_signals_Clear_process_signals( signo_to_mask(sig) ); - _POSIX_signals_Vectors[ sig ] = *act; - } - _ISR_Enable( level ); - } - - /* - * No need to evaluate or dispatch because: - * - * + If we were ignoring the signal before, none could be pending - * now (signals not posted when SIG_IGN). - * + If we are now ignoring a signal that was previously pending, - * we clear the pending signal indicator. - */ - - return 0; -} - -/* - * 3.3.5 Examine and Change Blocked Signals, P1003.1b-1993, p. 73 - * - * NOTE: P1003.1c/D10, p. 37 adds pthread_sigmask(). - * - */ - -int sigprocmask( - int how, - const sigset_t *set, - sigset_t *oset -) -{ - /* - * P1003.1c/Draft 10, p. 38 maps sigprocmask to pthread_sigmask. - */ - - return pthread_sigmask( how, set, oset ); -} - -/* - * 3.3.5 Examine and Change Blocked Signals, P1003.1b-1993, p. 73 - * - * NOTE: P1003.1c/D10, p. 37 adds pthread_sigmask(). - */ - -int pthread_sigmask( - int how, - const sigset_t *set, - sigset_t *oset -) -{ - POSIX_API_Control *api; - - if ( !set && !oset ) - set_errno_and_return_minus_one( EINVAL ); - - api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; - - if ( oset ) - *oset = api->signals_blocked; - - if ( !set ) - return 0; - - switch ( how ) { - case SIG_BLOCK: - api->signals_blocked |= *set; - break; - case SIG_UNBLOCK: - api->signals_blocked &= ~*set; - break; - case SIG_SETMASK: - api->signals_blocked = *set; - break; - default: - set_errno_and_return_minus_one( EINVAL ); - } - - /* XXX are there critical section problems here? */ - - /* XXX evaluate the new set */ - - if ( ~api->signals_blocked & - (api->signals_pending | _POSIX_signals_Pending) ) { - _Thread_Executing->do_post_task_switch_extension = TRUE; - _Thread_Dispatch(); - } - - return 0; -} - -/* - * 3.3.6 Examine Pending Signals, P1003.1b-1993, p. 75 - */ - -int sigpending( - sigset_t *set -) -{ - POSIX_API_Control *api; - - if ( !set ) - set_errno_and_return_minus_one( EINVAL ); - - api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; - - *set = api->signals_pending | _POSIX_signals_Pending; - - return 0; -} - -/* - * 3.3.7 Wait for a Signal, P1003.1b-1993, p. 75 - */ - -int sigsuspend( - const sigset_t *sigmask -) -{ - sigset_t saved_signals_blocked; - sigset_t all_signals; - int status; - POSIX_API_Control *api; - - api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; - - status = sigprocmask( SIG_BLOCK, sigmask, &saved_signals_blocked ); - - (void) sigfillset( &all_signals ); - - status = sigtimedwait( &all_signals, NULL, NULL ); - - (void) sigprocmask( SIG_SETMASK, &saved_signals_blocked, NULL ); - - return status; -} - -/* - * 3.3.8 Synchronously Accept a Signal, P1003.1b-1993, p. 76 - * - * NOTE: P1003.1c/D10, p. 39 adds sigwait(). - */ - -int sigwaitinfo( - const sigset_t *set, - siginfo_t *info -) -{ - return sigtimedwait( set, info, NULL ); -} - -/* - * 3.3.8 Synchronously Accept a Signal, P1003.1b-1993, p. 76 - * - * NOTE: P1003.1c/D10, p. 39 adds sigwait(). - */ - -int _POSIX_signals_Get_highest( - sigset_t set -) -{ - int signo; - - for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { - if ( set & signo_to_mask( signo ) ) - return signo; - } - -/* XXX - add __SIGFIRSTNOTRT or something like that to newlib siginfo.h */ - - for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { - if ( set & signo_to_mask( signo ) ) - return signo; - } - - return 0; -} - -int sigtimedwait( - const sigset_t *set, - siginfo_t *info, - const struct timespec *timeout -) -{ - Thread_Control *the_thread; - POSIX_API_Control *api; - Watchdog_Interval interval; - siginfo_t signal_information; - siginfo_t *the_info; - int signo; - - the_info = ( info ) ? info : &signal_information; - - the_thread = _Thread_Executing; - - api = the_thread->API_Extensions[ THREAD_API_POSIX ]; - - /* - * What if they are already pending? - */ - - /* API signals pending? */ - - if ( *set & api->signals_pending ) { - /* XXX real info later */ - the_info->si_signo = _POSIX_signals_Get_highest( api->signals_pending ); - _POSIX_signals_Clear_signals( api, the_info->si_signo, the_info, - FALSE, FALSE ); - the_info->si_code = SI_USER; - the_info->si_value.sival_int = 0; - return the_info->si_signo; - } - - /* Process pending signals? */ - - if ( *set & _POSIX_signals_Pending) { - signo = _POSIX_signals_Get_highest( _POSIX_signals_Pending ); - _POSIX_signals_Clear_signals( api, signo, the_info, TRUE, FALSE ); - - if ( !info ) { - the_info->si_signo = signo; - the_info->si_code = SI_USER; - the_info->si_value.sival_int = 0; - } - } - - interval = 0; - if ( timeout ) { - - if (timeout->tv_nsec < 0 || timeout->tv_nsec >= TOD_NANOSECONDS_PER_SECOND) - set_errno_and_return_minus_one( EINVAL ); - - interval = _POSIX_Timespec_to_interval( timeout ); - } - - the_info->si_signo = -1; - - _Thread_Disable_dispatch(); - the_thread->Wait.queue = &_POSIX_signals_Wait_queue; - the_thread->Wait.return_code = EINTR; - the_thread->Wait.option = *set; - the_thread->Wait.return_argument = (void *) the_info; - _Thread_queue_Enter_critical_section( &_POSIX_signals_Wait_queue ); - _Thread_queue_Enqueue( &_POSIX_signals_Wait_queue, interval ); - _Thread_Enable_dispatch(); - - errno = _Thread_Executing->Wait.return_code; - return the_info->si_signo; -} - -/* - * 3.3.8 Synchronously Accept a Signal, P1003.1b-1993, p. 76 - * - * NOTE: P1003.1c/D10, p. 39 adds sigwait(). - */ - -int sigwait( - const sigset_t *set, - int *sig -) -{ - int status; - - status = sigtimedwait( set, NULL, NULL ); - - if ( status != -1 ) { - if ( sig ) - *sig = status; - return 0; - } - - return errno; -} - -/*PAGE - * - * 3.3.2 Send a Signal to a Process, P1003.1b-1993, p. 68 - * - * NOTE: Behavior of kill() depends on _POSIX_SAVED_IDS. - */ - -#define _POSIX_signals_Is_interested( _api, _mask ) \ - ( ~(_api)->signals_blocked & (_mask) ) - -int killinfo( - pid_t pid, - int sig, - const union sigval *value -) -{ - sigset_t mask; - POSIX_API_Control *api; - unsigned32 the_class; - unsigned32 index; - unsigned32 maximum; - Objects_Information *the_info; - Objects_Control **object_table; - Thread_Control *the_thread; - Thread_Control *interested_thread; - Priority_Control interested_priority; - Chain_Control *the_chain; - Chain_Node *the_node; - siginfo_t siginfo_struct; - siginfo_t *siginfo; - POSIX_signals_Siginfo_node *psiginfo; - - /* - * Only supported for the "calling process" (i.e. this node). - */ - - if( pid != getpid() ) - set_errno_and_return_minus_one( ESRCH ); - - /* - * Validate the signal passed if not 0. - */ - - if ( sig && !is_valid_signo(sig) ) - set_errno_and_return_minus_one( EINVAL ); - - /* - * If the signal is being ignored, then we are out of here. - */ - - if ( !sig || _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) - return 0; - - /* - * P1003.1c/Draft 10, p. 33 says that certain signals should always - * be directed to the executing thread such as those caused by hardware - * faults. - */ - - switch ( sig ) { - case SIGFPE: - case SIGILL: - case SIGSEGV: - return pthread_kill( pthread_self(), sig ); - default: - break; - } - - mask = signo_to_mask( sig ); - - /* - * Build up a siginfo structure - */ - - siginfo = &siginfo_struct; - siginfo->si_signo = sig; - siginfo->si_code = SI_USER; - if ( !value ) { - siginfo->si_value.sival_int = 0; - } else { - siginfo->si_value = *value; - } - - _Thread_Disable_dispatch(); - - /* - * Is the currently executing thread interested? If so then it will - * get it an execute it as soon as the dispatcher executes. - */ - - the_thread = _Thread_Executing; - - api = the_thread->API_Extensions[ THREAD_API_POSIX ]; - if ( _POSIX_signals_Is_interested( api, mask ) ) { - goto process_it; - } - - /* - * Is an interested thread waiting for this signal (sigwait())? - */ - - /* XXX violation of visibility -- need to define thread queue support */ - - for( index=0 ; - index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ; - index++ ) { - - the_chain = &_POSIX_signals_Wait_queue.Queues.Priority[ index ]; - - for ( the_node = the_chain->first ; - !_Chain_Is_tail( the_chain, the_node ) ; - the_node = the_node->next ) { - - the_thread = (Thread_Control *)the_node; - api = the_thread->API_Extensions[ THREAD_API_POSIX ]; - - if ((the_thread->Wait.option & mask) || (~api->signals_blocked & mask)) { - goto process_it; - } - - } - } - - /* - * Is any other thread interested? The highest priority interested - * thread is selected. In the event of a tie, then the following - * additional criteria is used: - * - * + ready thread over blocked - * + blocked on call interruptible by signal (can return EINTR) - * + blocked on call not interruptible by signal - * - * This looks at every thread in the system regardless of the creating API. - * - * NOTES: - * - * + rtems internal threads do not receive signals. - */ - - interested_thread = NULL; - interested_priority = PRIORITY_MAXIMUM + 1; - - for ( the_class = OBJECTS_CLASSES_FIRST_THREAD_CLASS; - the_class <= OBJECTS_CLASSES_LAST_THREAD_CLASS; - the_class++ ) { - - if ( the_class == OBJECTS_INTERNAL_THREADS ) - continue; - - the_info = _Objects_Information_table[ the_class ]; - - if ( !the_info ) /* manager not installed */ - continue; - - maximum = the_info->maximum; - object_table = the_info->local_table; - - assert( object_table ); /* always at least 1 entry */ - - for ( index = 1 ; index <= maximum ; index++ ) { - the_thread = (Thread_Control *) object_table[ index ]; - - if ( !the_thread ) - continue; - - /* - * If this thread is of lower priority than the interested thread, - * go on to the next thread. - */ - - if ( the_thread->current_priority > interested_priority ) - continue; - - /* - * If this thread is not interested, then go on to the next thread. - */ - - api = the_thread->API_Extensions[ THREAD_API_POSIX ]; - - if ( !api || !_POSIX_signals_Is_interested( api, mask ) ) - continue; - - /* - * Now we know the thread under connsideration is interested. - * If the thread under consideration is of higher priority, then - * it becomes the interested thread. - */ - - if ( the_thread->current_priority < interested_priority ) { - interested_thread = the_thread; - interested_priority = the_thread->current_priority; - continue; - } - - /* - * Now the thread and the interested thread have the same priority. - * If the interested thread is ready, then we don't need to send it - * to a blocked thread. - */ - - if ( _States_Is_ready( interested_thread->current_state ) ) - continue; - - /* - * Now the interested thread is blocked. - * If the thread we are considering is not, the it becomes the - * interested thread. - */ - - if ( _States_Is_ready( the_thread->current_state ) ) { - interested_thread = the_thread; - interested_priority = the_thread->current_priority; - continue; - } - - /* - * Now we know both threads are blocked. - * If the interested thread is interruptible, then just use it. - */ - - /* XXX need a new states macro */ - if ( interested_thread->current_state & STATES_INTERRUPTIBLE_BY_SIGNAL ) - continue; - - /* - * Now both threads are blocked and the interested thread is not - * interruptible. - * If the thread under consideration is interruptible by a signal, - * then it becomes the interested thread. - */ - - /* XXX need a new states macro */ - if ( the_thread->current_state & STATES_INTERRUPTIBLE_BY_SIGNAL ) { - interested_thread = the_thread; - interested_priority = the_thread->current_priority; - } - } - } - - if ( interested_thread ) { - the_thread = interested_thread; - goto process_it; - } - - /* - * OK so no threads were interested right now. It will be left on the - * global pending until a thread receives it. The global set of threads - * can change interest in this signal in one of the following ways: - * - * + a thread is created with the signal unblocked, - * + pthread_sigmask() unblocks the signal, - * + sigprocmask() unblocks the signal, OR - * + sigaction() which changes the handler to SIG_IGN. - */ - - the_thread = NULL; - goto post_process_signal; - - /* - * We found a thread which was interested, so now we mark that this - * thread needs to do the post context switch extension so it can - * evaluate the signals pending. - */ - -process_it: - - the_thread->do_post_task_switch_extension = TRUE; - - /* - * Returns TRUE if the signal was synchronously given to a thread - * blocked waiting for the signal. - */ - - if ( _POSIX_signals_Unblock_thread( the_thread, sig, siginfo ) ) { - _Thread_Enable_dispatch(); - return 0; - } - -post_process_signal: - - /* - * We may have woken up a thread but we definitely need to post the - * signal to the process wide information set. - */ - - _POSIX_signals_Set_process_signals( mask ); - - if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) { - - psiginfo = (POSIX_signals_Siginfo_node *) - _Chain_Get( &_POSIX_signals_Inactive_siginfo ); - if ( !psiginfo ) - set_errno_and_return_minus_one( EAGAIN ); - - psiginfo->Info = *siginfo; - - _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); - } - - _Thread_Enable_dispatch(); - return 0; -} - -/*PAGE - * - * 3.3.2 Send a Signal to a Process, P1003.1b-1993, p. 68 - * - * NOTE: Behavior of kill() depends on _POSIX_SAVED_IDS. - */ - -int kill( - pid_t pid, - int sig -) -{ - return killinfo( pid, sig, NULL ); -} - -/* - * 3.3.9 Queue a Signal to a Process, P1003.1b-1993, p. 78 - */ - -int sigqueue( - pid_t pid, - int signo, - const union sigval value -) -{ - return killinfo( pid, signo, &value ); -} - -/* - * 3.3.10 Send a Signal to a Thread, P1003.1c/D10, p. 43 - */ - -int pthread_kill( - pthread_t thread, - int sig -) -{ - POSIX_API_Control *api; - Thread_Control *the_thread; - Objects_Locations location; - - if ( sig && !is_valid_signo(sig) ) - set_errno_and_return_minus_one( EINVAL ); - - if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) - set_errno_and_return_minus_one( ENOSYS ); - - /* - * RTEMS does not support sending a siginfo signal to a specific thread. - */ - - the_thread = _POSIX_Threads_Get( thread, &location ); - switch ( location ) { - case OBJECTS_ERROR: - case OBJECTS_REMOTE: - set_errno_and_return_minus_one( ESRCH ); - case OBJECTS_LOCAL: - /* - * If sig == 0 then just validate arguments - */ - - api = the_thread->API_Extensions[ THREAD_API_POSIX ]; - - if ( sig ) { - - if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) { - _Thread_Enable_dispatch(); - return 0; - } - - /* XXX critical section */ - - api->signals_pending |= signo_to_mask( sig ); - - (void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL ); - - the_thread->do_post_task_switch_extension = TRUE; - - if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) - _ISR_Signals_to_thread_executing = TRUE; - } - _Thread_Enable_dispatch(); - return 0; - } - - return POSIX_BOTTOM_REACHED(); -} - -/* - * 3.4.1 Schedule Alarm, P1003.1b-1993, p. 79 - */ - -Watchdog_Control _POSIX_signals_Alarm_timer; - -unsigned int alarm( - unsigned int seconds -) -{ - unsigned int remaining = 0; - Watchdog_Control *the_timer; - - the_timer = &_POSIX_signals_Alarm_timer; - - switch ( _Watchdog_Remove( the_timer ) ) { - case WATCHDOG_INACTIVE: - case WATCHDOG_BEING_INSERTED: - break; - - case WATCHDOG_ACTIVE: - case WATCHDOG_REMOVE_IT: - remaining = the_timer->initial - - (the_timer->stop_time - the_timer->start_time); - break; - } - - _Watchdog_Insert_seconds( the_timer, seconds ); - - return remaining; -} - -/* - * 3.4.2 Suspend Process Execution, P1003.1b-1993, p. 81 - */ - -int pause( void ) -{ - sigset_t all_signals; - int status; - - (void) sigfillset( &all_signals ); - - status = sigtimedwait( &all_signals, NULL, NULL ); - - return status; -} |