#ifndef __TRIGGER_H_ #define __TRIGGER_H_ 1 #include "util/debug.h" #include "asm/bug.h" /* * Use trigger to model operations which need to be executed when * an event (a signal, for example) is observed. * * States and transits: * * * OFF--(on)--> READY --(hit)--> HIT * ^ | * | (ready) * | | * \_____________/ * * is_hit and is_ready are two key functions to query the state of * a trigger. is_hit means the event already happen; is_ready means the * trigger is waiting for the event. */ struct trigger { volatile enum { TRIGGER_ERROR = -2, TRIGGER_OFF = -1, TRIGGER_READY = 0, TRIGGER_HIT = 1, } state; const char *name; }; #define TRIGGER_WARN_ONCE(t, exp) \ WARN_ONCE(t->state != exp, "trigger '%s' state transist error: %d in %s()\n", \ t->name, t->state, __func__) static inline bool trigger_is_available(struct trigger *t) { return t->state >= 0; } static inline bool trigger_is_error(struct trigger *t) { return t->state <= TRIGGER_ERROR; } static inline void trigger_on(struct trigger *t) { TRIGGER_WARN_ONCE(t, TRIGGER_OFF); t->state = TRIGGER_READY; } static inline void trigger_ready(struct trigger *t) { if (!trigger_is_available(t)) return; t->state = TRIGGER_READY; } static inline void trigger_hit(struct trigger *t) { if (!trigger_is_available(t)) return; TRIGGER_WARN_ONCE(t, TRIGGER_READY); t->state = TRIGGER_HIT; } static inline void trigger_off(struct trigger *t) { if (!trigger_is_available(t)) return; t->state = TRIGGER_OFF; } static inline void trigger_error(struct trigger *t) { t->state = TRIGGER_ERROR; } static inline bool trigger_is_ready(struct trigger *t) { return t->state == TRIGGER_READY; } static inline bool trigger_is_hit(struct trigger *t) { return t->state == TRIGGER_HIT; } #define DEFINE_TRIGGER(n) \ struct trigger n = {.state = TRIGGER_OFF, .name = #n} #endif f
diff options
context:
space:
mode:
authorTomasz Stanislawski <t.stanislaws@samsung.com>2012-06-14 11:32:24 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-11-25 17:21:00 -0200
commit83ae7c5a1b5b5cd4380ff70797e4c5dcfb61a70d (patch)
tree2b1b4741b24b73c9a61ebe48fb9a399b194e01e0
parent19b6ef51640fb35666884c7b577b1a24a4be8e34 (diff)
[media] v4l: vb2: add buffer exporting via dmabuf
This patch adds extension to videobuf2-core. It allow to export an mmap buffer as a DMABUF file descriptor. Signed-off-by: Tomasz Stanislawski <t.stanislaws@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Acked-by: Hans Verkuil <hans.verkuil@cisco.com> Tested-by: Mauro Carvalho Chehab <mchehab@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat