<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://tech-pubs.net/wiki/index.php?action=history&amp;feed=atom&amp;title=Kernel%3A_Signal_Infrastructure</id>
	<title>Kernel: Signal Infrastructure - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://tech-pubs.net/wiki/index.php?action=history&amp;feed=atom&amp;title=Kernel%3A_Signal_Infrastructure"/>
	<link rel="alternate" type="text/html" href="https://tech-pubs.net/wiki/index.php?title=Kernel:_Signal_Infrastructure&amp;action=history"/>
	<updated>2026-04-19T19:25:11Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://tech-pubs.net/wiki/index.php?title=Kernel:_Signal_Infrastructure&amp;diff=472&amp;oldid=prev</id>
		<title>Raion at 23:56, 9 January 2026</title>
		<link rel="alternate" type="text/html" href="https://tech-pubs.net/wiki/index.php?title=Kernel:_Signal_Infrastructure&amp;diff=472&amp;oldid=prev"/>
		<updated>2026-01-09T23:56:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:56, 9 January 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l104&quot;&gt;Line 104:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 104:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Differences: BSD simpler — no queued signals, weaker real-time, different threading model.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Differences: BSD simpler — no queued signals, weaker real-time, different threading model.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Overall, IRIX signal system is SVR4/POSIX compliant with strong multi-threading and queued signal support. illumos closest modern analog; BSD covers basics but lacks queued delivery and per-thread complexity. For replication: preserve dual process/thread model, queued siginfo handling, and careful ut_lock/sigvec coordination.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Overall, IRIX signal system is SVR4/POSIX compliant with strong multi-threading and queued signal support. illumos closest modern analog; BSD covers basics but lacks queued delivery and per-thread complexity. For replication: preserve dual process/thread model, queued siginfo handling, and careful ut_lock/sigvec coordination.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category: Kernel Documentation]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Raion</name></author>
	</entry>
	<entry>
		<id>https://tech-pubs.net/wiki/index.php?title=Kernel:_Signal_Infrastructure&amp;diff=462&amp;oldid=prev</id>
		<title>Raion: Created page with &quot;== Overview == The IRIX kernel signal infrastructure provides a comprehensive, POSIX-compliant signal delivery system with extensions for real-time, debugging, and multi-threaded processes. Signals are managed at both process (sigvec_t in proc_t) and thread (ut_sig, ut_sighold in uthread_t) levels, allowing per-thread signal masks and delivery while maintaining process-wide consistency. Key features:  Queued signals (sigqueue_t) for POSIX sigqueue and siginfo delivery. P...&quot;</title>
		<link rel="alternate" type="text/html" href="https://tech-pubs.net/wiki/index.php?title=Kernel:_Signal_Infrastructure&amp;diff=462&amp;oldid=prev"/>
		<updated>2026-01-04T03:52:14Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== Overview == The IRIX kernel signal infrastructure provides a comprehensive, POSIX-compliant signal delivery system with extensions for real-time, debugging, and multi-threaded processes. Signals are managed at both process (sigvec_t in proc_t) and thread (ut_sig, ut_sighold in uthread_t) levels, allowing per-thread signal masks and delivery while maintaining process-wide consistency. Key features:  Queued signals (sigqueue_t) for POSIX sigqueue and siginfo delivery. P...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Overview ==&lt;br /&gt;
The IRIX kernel signal infrastructure provides a comprehensive, POSIX-compliant signal delivery system with extensions for real-time, debugging, and multi-threaded processes. Signals are managed at both process (sigvec_t in proc_t) and thread (ut_sig, ut_sighold in uthread_t) levels, allowing per-thread signal masks and delivery while maintaining process-wide consistency.&lt;br /&gt;
Key features:&lt;br /&gt;
&lt;br /&gt;
Queued signals (sigqueue_t) for POSIX sigqueue and siginfo delivery.&lt;br /&gt;
Priority-based delivery with job control stops handled specially.&lt;br /&gt;
Alternate signal stacks (sigaltstack, legacy sigstack).&lt;br /&gt;
Signal contexts (ucontext_t, sigcontext) for setcontext/getcontext and signal handlers.&lt;br /&gt;
Debugging integration (/proc, ptrace).&lt;br /&gt;
Multi-threaded awareness — signals can target specific uthreads or the process.&lt;br /&gt;
Async signal delivery via async_vec_t for non-sleepable contexts.&lt;br /&gt;
&lt;br /&gt;
The system carefully handles races between signal posting, masking, and delivery using spinlocks and atomic operations.&lt;br /&gt;
== Key Functions ==&lt;br /&gt;
Signal Posting&lt;br /&gt;
&lt;br /&gt;
sigtopid: Send signal to process by PID (handles async via async_call if SIG_NOSLEEP).&lt;br /&gt;
sigtouthread / sigtouthread_common: Deliver to specific uthread.&lt;br /&gt;
sigaddq / sigdeq / sigdelq: Manage queued siginfo structures.&lt;br /&gt;
sigqueue_alloc / sigqueue_free: Zone-based allocation.&lt;br /&gt;
&lt;br /&gt;
Signal Delivery&lt;br /&gt;
&lt;br /&gt;
issig: Check for pending unmasked signals (returns signal number).&lt;br /&gt;
fsig: Find first unheld signal.&lt;br /&gt;
psig: Process current signal — installs handler or takes default action.&lt;br /&gt;
sendsig: Set up user context and registers for handler entry.&lt;br /&gt;
stop / unstop: Job control and debugger stops.&lt;br /&gt;
&lt;br /&gt;
Context Management&lt;br /&gt;
&lt;br /&gt;
save/restore context functions for ucontext_t and legacy sigcontext.&lt;br /&gt;
irix5_*_savecontext / restorecontext: ABI-specific versions.&lt;br /&gt;
&lt;br /&gt;
Signal Waiting&lt;br /&gt;
&lt;br /&gt;
sigpending: Return pending signal set.&lt;br /&gt;
sigsuspend: Swap mask and sleep.&lt;br /&gt;
sigprocmask: Modify signal mask.&lt;br /&gt;
sigpoll / sigtimedwait: Wait for specific signals (POSIX sigwait family).&lt;br /&gt;
&lt;br /&gt;
Special Interfaces&lt;br /&gt;
&lt;br /&gt;
ptrace: Classic debugging interface.&lt;br /&gt;
sigaltstack / sigstack: Alternate signal stack control.&lt;br /&gt;
core: Generate core dump on fatal signals.&lt;br /&gt;
&lt;br /&gt;
== Undocumented or IRIX-Specific Interfaces and Behaviors ==&lt;br /&gt;
Structures&lt;br /&gt;
&lt;br /&gt;
sigvec_t (process-wide):&lt;br /&gt;
sv_sig, sv_sigign, sv_sigcatch: Pending, ignored, caught signals.&lt;br /&gt;
sv_hndlr[NSIG_HNDLRS]: Handler array.&lt;br /&gt;
sv_sigmasks, sv_signodefer, sv_sigrestart, sv_sigresethand: Per-signal flags.&lt;br /&gt;
sv_sigqueue: Head of queued siginfo list.&lt;br /&gt;
sv_pending: Count of queued signals.&lt;br /&gt;
&lt;br /&gt;
uthread_t signal fields:&lt;br /&gt;
ut_sig: Thread-private pending signals.&lt;br /&gt;
ut_sighold: Thread-private blocked mask.&lt;br /&gt;
ut_sigwait: Signals being waited on.&lt;br /&gt;
ut_cursig, ut_curinfo: Current signal and siginfo.&lt;br /&gt;
ut_suspmask: Saved mask during sigsuspend.&lt;br /&gt;
&lt;br /&gt;
sigqueue_t: Queued siginfo with chaining.&lt;br /&gt;
&lt;br /&gt;
Dual Delivery Model&lt;br /&gt;
&lt;br /&gt;
Signals can be process-directed (posted to sigvec_t) or thread-directed (sigtouthread).&lt;br /&gt;
VPROC_SENDSIG virtualizes delivery across threads.&lt;br /&gt;
Async delivery queue for non-sleepable contexts.&lt;br /&gt;
&lt;br /&gt;
Job Control Special Cases&lt;br /&gt;
&lt;br /&gt;
SIGCONT cancels pending stop signals.&lt;br /&gt;
Stop signals ignored if no handler and process orphaned (except SIGSTOP).&lt;br /&gt;
&lt;br /&gt;
Queued Signals&lt;br /&gt;
&lt;br /&gt;
sigqueue() delivers siginfo_t with value.&lt;br /&gt;
Multiple same-signal infos preserved only if SI_QUEUE, SI_ASYNCIO, etc.&lt;br /&gt;
&lt;br /&gt;
Alternate Stack&lt;br /&gt;
&lt;br /&gt;
prxy_sigsp, prxy_spsize, prxy_siglb: Track alternate stack base/size/low bound.&lt;br /&gt;
SS_ONSTACK flag managed carefully.&lt;br /&gt;
&lt;br /&gt;
== Similarities to illumos and BSD Kernel Implementations ==&lt;br /&gt;
illumos (Solaris-derived)&lt;br /&gt;
Strong similarity:&lt;br /&gt;
&lt;br /&gt;
sigqueue(), queued signals, siginfo_t.&lt;br /&gt;
sigprocmask, sigsuspend, sigaction semantics.&lt;br /&gt;
Alternate stack via sigaltstack.&lt;br /&gt;
Process + thread signal masks.&lt;br /&gt;
&lt;br /&gt;
Differences: illumos uses turnstiles; IRIX uses explicit queues and sv_t.&lt;br /&gt;
BSD (FreeBSD, etc.)&lt;br /&gt;
Moderate similarity:&lt;br /&gt;
&lt;br /&gt;
sigaction, sigprocmask, kill, sigaltstack.&lt;br /&gt;
Signal contexts for longjmp-style handlers.&lt;br /&gt;
&lt;br /&gt;
Differences: BSD simpler — no queued signals, weaker real-time, different threading model.&lt;br /&gt;
Overall, IRIX signal system is SVR4/POSIX compliant with strong multi-threading and queued signal support. illumos closest modern analog; BSD covers basics but lacks queued delivery and per-thread complexity. For replication: preserve dual process/thread model, queued siginfo handling, and careful ut_lock/sigvec coordination.&lt;/div&gt;</summary>
		<author><name>Raion</name></author>
	</entry>
</feed>