Man page of test_and_set_bit(int nr, volatile void *addr)这样描述它的功能:

"Set a bit and return its old value"

 nr -- Bit to set

 addr -- Address to count from

注意:nr是需要设置的“哪一位”,而不是将addr的值设置成nr。

例如"test_and_set_bit(0, &var)","0" 不是要设置的值,而是表示var中第0位需要被设置为"1"。此函数返回相应比特位上一次被设置的值。
test_and_clear_bit()用法正好相反, which assigns "0" to the specified bit.