TABLE OF CONTENTS
/Signal [ Modules ]
DESCRIPTION
SEE ALSO
/Messagequeue, /Mutex, /Pipe, /Semaphore, /Syncpipe
Signal/Os_task_getevent [ Functions ]
[ Top ] [ Signal ] [ Functions ]
DESCRIPTION
DECLARATION
Function Os_task_getevent(byval Eventmask As Byte , Byval Queuemode As Word) As Byte
SOURCE
Local Flags As Byte Local Event As Byte Os_enter_critical Flags = Getbyte(Os_task_active , Os_task_hdr_signals_ptr) Event = Flags And Eventmask If Event = False Then ' no events waiting ' Select Case Queuemode Case Os_queuemode_noblock: ' return error ' Os_exit_critical Os_task_getevent = False Exit Function Case Os_queuemode_block: ' suspend and wait for event ' Os_task_suspendmode Os_task_active , Os_task_suspend_nowakeup , 0 Case Else ' suspend and wait for event or timeout ' Os_task_suspendmode Os_task_active , Os_task_suspend_timersingleshot , Queuemode End Select Os_exit_critical Os_task_suspend Os_task_active Os_enter_critical Flags = Getbyte(Os_task_active , Os_task_hdr_signals_ptr) Event = Flags And Eventmask If Event = False Then ' still no events ' Os_exit_critical Os_task_getevent = False Exit Function End If End If Event = Get_msb_b(event) ' get highest event ' Decr Event Flags.event = False ' clear event flag ' Incr Event Setbyte Os_task_active , Os_task_hdr_signals_ptr , Flags Os_exit_critical Os_task_getevent = Event End Function
Signal/Os_task_setevent [ Functions ]
[ Top ] [ Signal ] [ Functions ]
DESCRIPTION
DECLARATION
Sub Os_task_setevent(byref Task As Word , Byval Event As Byte)
SOURCE
Local Flags As Byte Decr Event Os_enter_critical Flags = Getbyte(Task , Os_task_hdr_signals_ptr) Flags.event = True ' set event flag ' Setbyte Task , Os_task_hdr_signals_ptr , Flags Os_event_task = Task Os_exit_critical Os_task_event ' Signal the Task ' End Sub