diff options
| -rw-r--r-- | Documentation/atomic_ops.txt | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/Documentation/atomic_ops.txt b/Documentation/atomic_ops.txt index 68542fe13b85..183e41bdcb69 100644 --- a/Documentation/atomic_ops.txt +++ b/Documentation/atomic_ops.txt | |||
| @@ -7,12 +7,13 @@ | |||
| 7 | maintainers on how to implement atomic counter, bitops, and spinlock | 7 | maintainers on how to implement atomic counter, bitops, and spinlock |
| 8 | interfaces properly. | 8 | interfaces properly. |
| 9 | 9 | ||
| 10 | The atomic_t type should be defined as a signed integer. | 10 | The atomic_t type should be defined as a signed integer and |
| 11 | Also, it should be made opaque such that any kind of cast to a normal | 11 | the atomic_long_t type as a signed long integer. Also, they should |
| 12 | C integer type will fail. Something like the following should | 12 | be made opaque such that any kind of cast to a normal C integer type |
| 13 | suffice: | 13 | will fail. Something like the following should suffice: |
| 14 | 14 | ||
| 15 | typedef struct { int counter; } atomic_t; | 15 | typedef struct { int counter; } atomic_t; |
| 16 | typedef struct { long counter; } atomic_long_t; | ||
| 16 | 17 | ||
| 17 | Historically, counter has been declared volatile. This is now discouraged. | 18 | Historically, counter has been declared volatile. This is now discouraged. |
| 18 | See Documentation/volatile-considered-harmful.txt for the complete rationale. | 19 | See Documentation/volatile-considered-harmful.txt for the complete rationale. |
| @@ -37,6 +38,9 @@ initializer is used before runtime. If the initializer is used at runtime, a | |||
| 37 | proper implicit or explicit read memory barrier is needed before reading the | 38 | proper implicit or explicit read memory barrier is needed before reading the |
| 38 | value with atomic_read from another thread. | 39 | value with atomic_read from another thread. |
| 39 | 40 | ||
| 41 | As with all of the atomic_ interfaces, replace the leading "atomic_" | ||
| 42 | with "atomic_long_" to operate on atomic_long_t. | ||
| 43 | |||
| 40 | The second interface can be used at runtime, as in: | 44 | The second interface can be used at runtime, as in: |
| 41 | 45 | ||
| 42 | struct foo { atomic_t counter; }; | 46 | struct foo { atomic_t counter; }; |
