mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-21 22:01:31 +02:00
MINOR: task: define two new one-shot events for use with WOKEN_OTHER or MSG
TASK_WOKEN_MSG only says "someone sent you a message" but doesn't convey any info about the message. TASK_WOKEN_OTHER says "you're woken for another reason" but doesn't tell which one. Most often they're used as-is by the task handlers to report very specific situations. For some important control notifications, having the ability to modulate the message a little bit is useful, so let's define two user event types UEVT1 and UEVT2 to be used in conjunction with TASK_WOKEN_MSG or _OTHER so that the application can know that a specific condition was explicitly requested. It will be used this way: task_wakeup(s->task, TASK_WOKEN_MSG | TASK_F_UEVT1); or: task_wakeup(s->task, TASK_WOKEN_OTHER | TASK_F_UEVT2); Since events are cumulative, keep in mind not to consider a 3rd value as the combination of EVT1+EVT2; these really mean that the two events appeared (though in unspecified order).
This commit is contained in:
parent
d1c398b786
commit
b5281283bb
@ -47,9 +47,9 @@
|
||||
#define TASK_WOKEN_TIMER 0x00000200 /* woken up because of expired timer */
|
||||
#define TASK_WOKEN_IO 0x00000400 /* woken up because of completed I/O */
|
||||
#define TASK_WOKEN_SIGNAL 0x00000800 /* woken up by a system signal */
|
||||
#define TASK_WOKEN_MSG 0x00001000 /* woken up by another task's message */
|
||||
#define TASK_WOKEN_MSG 0x00001000 /* woken up by another task's message (see also UEVT/USR1) */
|
||||
#define TASK_WOKEN_RES 0x00002000 /* woken up because of available resource */
|
||||
#define TASK_WOKEN_OTHER 0x00004000 /* woken up for an unspecified reason */
|
||||
#define TASK_WOKEN_OTHER 0x00004000 /* woken up for an unspecified reason (see also UEVT/USR1) */
|
||||
|
||||
/* use this to check a task state or to clean it up before queueing */
|
||||
#define TASK_WOKEN_ANY (TASK_WOKEN_OTHER|TASK_WOKEN_INIT|TASK_WOKEN_TIMER| \
|
||||
@ -58,7 +58,9 @@
|
||||
|
||||
#define TASK_F_TASKLET 0x00008000 /* nature of this task: 0=task 1=tasklet */
|
||||
#define TASK_F_USR1 0x00010000 /* preserved user flag 1, application-specific, def:0 */
|
||||
/* unused: 0x20000..0x80000000 */
|
||||
#define TASK_F_UEVT1 0x00020000 /* one-shot user event type 1, application specific, def:0 */
|
||||
#define TASK_F_UEVT2 0x00040000 /* one-shot user event type 2, application specific, def:0 */
|
||||
/* unused: 0x80000..0x80000000 */
|
||||
|
||||
/* These flags are persistent across scheduler calls */
|
||||
#define TASK_PERSISTENT (TASK_SELF_WAKING | TASK_KILLED | \
|
||||
|
Loading…
x
Reference in New Issue
Block a user