30.12.2013 Views

T-Kernel Specification (1.B0.02)

T-Kernel Specification (1.B0.02)

T-Kernel Specification (1.B0.02)

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.

4.5. EXTENDED SYNCHRONIZATION AND COMMUNICATION FUNCTIONS 143<br />

[Additional Notes]<br />

If a task calling a rendezvous aborts for some reason before completion of the rendezvous (before<br />

tk rpl rdv is executed), the accepting task has no direct way of knowing of the abort. In such a<br />

case, error code E OBJ is returned to the rendezvous accepting task when it executes tk rpl rdv.<br />

After a rendezvous is established, tasks are in principle detached from the rendezvous port and have<br />

no need to reference information about each other. However, since the value of maxrmsz, used when<br />

checking the length of the reply message sent using tk rpl rdv, is dependent on the rendezvous port,<br />

the task in rendezvous must record this information somewhere. One possible implementation would be<br />

to put this information in the TCB of the calling task after it goes to WAIT state, or in another area<br />

that can be referenced from the TCB, such as a stack area.<br />

[Rationale for the <strong>Specification</strong>]<br />

The parameter rdvno is passed to tk rpl rdv and tk fwd por as information for distinguishing one<br />

established rendezvous from another, but the rendezvous port ID (porid) used when establishing a<br />

rendezvous is not designated. This is based on the design principle that tasks are no longer related to<br />

rendezvous ports after a rendezvous has been established.<br />

Error code E OBJ rather than E PAR is returned for an invalid rdvno. This is because rdvno itself is an<br />

object indicating the task that called the rendezvous.<br />

Copyright c○ 2002, 2003 by T-Engine Forum<br />

T-<strong>Kernel</strong> <strong>1.B0.02</strong>

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

Saved successfully!

Ooh no, something went wrong!