* Assert alignment is suitable for atomic accesses
* Move fields and pad to meet alignment constraints
* Add padding to JackEngineControl to account for inherited data
* Parenthesise padding length for clarity
* Revert "Parenthesise padding length for clarity"
This reverts commit 1f757b9ece.
* Revert "Add padding to JackEngineControl to account for inherited data"
This reverts commit 3d8c7d83ad.
* Revert "Move fields and pad to meet alignment constraints"
This reverts commit ff631bbbdc.
* Assure alignment by using 'alignas' on fields
FUTEX_WAIT may be interrupted by a signal and return EINTR. If a client
process takes a signal while on the futex, the jack client may error out
with no way to recover despite the signal being safe. Instead, retry if
errno is set to EINTR.
The main loop might be blocked by `data_ready` when JACK server dies
while the program is running.
To reproduce the problem:
1. Start JACK server
2. Run `jack_midi_dump`
3. Stop JACK server
4. Press Ctrl-C in `jack_midi_dump` to send SIGINT.
5. Observe that the program doesn't stop and stuck in the main loop.
This patch forces the `data_ready` to be signaled in the signal handler
to prevent indefinite waiting.
.github/ISSUE_TEMPLATE/bug_report.md:
Add a github issue template for reporting bugs, which tracks what
operating system the user has, which version of JACK is in use and makes
suggestions around how to provide information.
.github/ISSUE_TEMPLATE/feature_request.md:
Add a github issue template for suggesting new features.
SYS_futex is expected from system C library.
in glibc (/usr/include/bits/syscall.h defines it in terms of of NR_futex)
rv32 is using 64bit time_t from get go unlike other 32bit architectures
in glibc, therefore it wont have NR_futex defined but just NR_futex_time64
this aliases it to NR_futex so that SYS_futex is then defined for rv32
Signed-off-by: Khem Raj <raj.khem@gmail.com>