Typically, if you want to pass a small amount of information from an interrupt handler to a task, you would use a normal IPC like sigqueue() (https://pubs.opengroup.org/onlinepubs/7908799/xsh/sigqueue.html) which allows to send a type union sigval to the task.

The task would have to catch the signal with something like sigwaitinfo() (https://pubs.opengroup.org/onlinepubs/7908799/xsh/sigwaitinfo.html).

Originally, you could use mq_send() from interrupt handlers to send interrupt status to tasks, but unfortunately that feature was lost with some recent commits that redesigned the message handler that were apparently done without knowledge of that requirement.  NOTE that the documentation is now wrong, it says that you can still messages from interrupt handlers.  That is not true.

On 1/27/2023 12:15 PM, Nathan Hartman wrote:
Is there a global structure where you retain state information where it
would be appropriate to save the most refent known state in a volatile
variable?

On Fri, Jan 27, 2023 at 1:00 PM Tim Hardisty <t...@hardisty.co.uk> wrote:

Think this is an easy one but it's stumped me so far...

I am setting up the USB Overcurrent interrupt and can't find any fully
implemented examples.

The interrupt is set to both edges as I want to know when the over current
state is first set and later hopefully cleared.

I can obviously read the state of the input pin, but I sort of feel I
should be able to pass the state as an arg to the handler (via xcpt_t
handler).

Is that possible and, if so, how?


Reply via email to