Some interesting reads:
-- "A history of S_IFMT":
http://www.lubutu.com/soso/a-history-of-sifmt
-- "TASK_KILLABLE":
http://lwn.net/Articles/288056/
-- The syscall "signalfd()" which was new to me (whoops):
http://man7.org/linux/man-pages/man2/signalfd.2.html
-- Why "signalfd()" doesn't solve your problems either:
https://ldpreload.com/blog/signalfd-is-useless
____________________
I spent the better part of the weekend experimenting with PulseAudio.
I've always avoided PulseAudio as best as I could. It's a big
application and people say it causes a lot of problems. Most
importantly, plain ALSA worked okay for me. I have a pretty simple
setup (just a soundcard and speakers) that doesn't change a lot. So
why bother?
Recently, I wanted to use HDMI audio. It took me about an hour to
write an asoundrc for that purpose. Oh, right, I explicitly disabled
HDMI audio before because it was getting in the way.
I also wanted to make use of some bluetooth speakers, but I didn't
even try to get them working.
Okay, let's just give PulseAudio a try.
It works a lot better than I expected. No stuttering, no high latency,
no crashes (yet). The feature set is nice. All applications, even
older ones that use OSS, still work. I think I'll keep it.
Of course, I'd much rather use a simpler sound stack. Right now, sound
goes from the application through some wrapper library (like libao)
through userland ALSA (maybe) which then routes it to PulseAudio which
finally routes it to kernel ALSA. That's crazy.
I agree with many points made in this blog post, even though it's from
2009:
http://insanecoding.blogspot.de/2009/06/state-of-sound-in-linux-not-so-sorry.html
But then again, I'm tired of manually writing some asoundrc when I can
achieve the same goal using PulseAudio with just a few mouse clicks or
pacmd commands.