X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=CodingStyle;h=2f24ee396f057ded30413ad71e80e46797d10be9;hb=34290dbfe54a930258d4c1d00e82e7c3f51cea5f;hp=ee7a0e6d4b656c28905cbe382a9618037426d929;hpb=85b20fd6ee585f462e012fbcc7f966a81edab2ed;p=sliver-openvswitch.git diff --git a/CodingStyle b/CodingStyle index ee7a0e6d4..2f24ee396 100644 --- a/CodingStyle +++ b/CodingStyle @@ -249,6 +249,18 @@ details. (Some compilers also assume that the "if" branch is the more common case, so this can be a real form of optimization as well.) +RETURN VALUES + + For functions that return a success or failure indication, prefer +one of the following return value conventions: + + * An "int" where 0 indicates success and a positive errno value + indicates a reason for failure. + + * A "bool" where true indicates success and false indicates + failure. + + MACROS Don't define an object-like macro if an enum can be used instead. @@ -286,6 +298,21 @@ the name of each enum. For example: }; +THREAD SAFETY ANNOTATIONS + + Use the macros in lib/compiler.h to annotate locking requirements. +For example: + + static struct ovs_mutex mutex = OVS_MUTEX_INITIALIZER; + static struct ovs_rwlock rwlock = OVS_RWLOCK_INITIALIZER; + + void function_require_plain_mutex(void) OVS_REQUIRES(mutex); + void function_require_rwlock(void) OVS_REQ_RDLOCK(rwlock); + + Pass lock objects, not their addresses, to the annotation macros. +(Thus we have OVS_REQUIRES(mutex) above, not OVS_REQUIRES(&mutex).) + + SOURCE FILES Each source file should state its license in a comment at the very @@ -506,7 +533,8 @@ older compilers: As a matter of style, avoid // comments. - Avoid using GCC extensions unless you also add a fallback for -non-GCC compilers. You can, however, use GCC extensions and C99 -features in code that compiles only on GNU/Linux (such as -lib/netdev-linux.c), because GCC is the system compiler there. + Avoid using GCC or Clang extensions unless you also add a fallback +for other compilers. You can, however, use C99 features or GCC +extensions also supported by Clang in code that compiles only on +GNU/Linux (such as lib/netdev-linux.c), because GCC is the system +compiler there.