I'm making a linux USB driver, but having a bit (lot) of trouble. My user space program accessing the driver ends up with an 'D' in the STAT column, even after is is supposedly done. I found out that it means that my program is in an uninterruptable sleep state, and cannot be killed or otherwise exited. This I understand. However, there is a '+' symbol next to it, and I cannot find out what it means. Here is what I know (or should I say, hope is correct):

D = uninterruptable sleep
S = interruptable sleep
R = running
Z = zombie

However, many processes have second characters in the STAT column, such as '<', 's', 'n', and '+'. Some processes even have two of these additional characters. What do they mean? Better yet, where is there a good description of them?