06.08.2013 Views

pSOSystem System Calls - Read

pSOSystem System Calls - Read

pSOSystem System Calls - Read

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

pSOS+ <strong>System</strong> <strong>Calls</strong> as_catch<br />

Return Value<br />

Error Codes<br />

Notes<br />

Interrupt Control<br />

Interrupt control means that while an ASR is executing, hardware interrupts are<br />

disabled. On some processors, you can disable all interrupts at or below a certain<br />

interrupt level and enable all interrupts above that level. On other processors you<br />

can simply specify that all interrupts are either enabled or disabled. Details are<br />

provided below:<br />

How Signals Are Passed to the ASR<br />

The method by which signals are passed to the ASR is processor-specific:<br />

68K<br />

960<br />

x86<br />

On 68K processors, signals are passed to the ASR in the D0.L register.<br />

On 960 processors, signals are passed to the ASR in the G0 register.<br />

On x86 processors, signals are passed to the ASR in the EAX register.<br />

This system call always returns 0.<br />

This system call returns no errors.<br />

1. An invalid ASR (for example, start_addr = 0) should not be confused with<br />

the ASR attribute T_NOASR. If a task's ASR is invalid, then an as_send() call<br />

directed to it will be rejected and returned with an error; whereas, the T_NOASR<br />

attribute simply defers the ASR's execution, with any intervening signals sent to<br />

it left pending.<br />

2. A normal task would call as_catch() only once, and usually as part of its<br />

initialization sequence. Before the first as_catch() call, a task is initialized by<br />

the pSOS+ kernel to have an invalid ASR.<br />

<strong>pSO<strong>System</strong></strong> <strong>System</strong> <strong>Calls</strong> 1-5<br />

1

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!