diff options
| author | Ben Pfaff <blp@nicira.com> | 2011-05-06 12:59:51 -0700 |
|---|---|---|
| committer | Ben Pfaff <blp@nicira.com> | 2011-05-16 13:45:53 -0700 |
| commit | 6506f45c0818618e96deb858bbabdf2cc90eb2df (patch) | |
| tree | ef898fc14eade893c460fcbd1b3d01c960595c96 /include | |
| parent | c4cac9abf211b74c777b86ad7281e7b0f42a3a39 (diff) | |
| download | openvswitch-6506f45c0818618e96deb858bbabdf2cc90eb2df.tar.gz | |
Make the source tree sparse clean.
With this commit, the tree compiles clean with sparse commit 87f4a7fda3d
"Teach 'already_tokenized()' to use the stream name hash table" with patch
"evaluate: Allow sizeof(_Bool) to succeed" available at
http://permalink.gmane.org/gmane.comp.parsers.sparse/2461 applied, as long
as the "include/sparse" directory is included for use by sparse (only),
e.g.:
make CC="CHECK='sparse -I../include/sparse' cgcc"
Diffstat (limited to 'include')
| -rw-r--r-- | include/automake.mk | 1 | ||||
| -rw-r--r-- | include/sparse/arpa/inet.h | 21 | ||||
| -rw-r--r-- | include/sparse/assert.h | 22 | ||||
| -rw-r--r-- | include/sparse/automake.mk | 8 | ||||
| -rw-r--r-- | include/sparse/math.h | 203 | ||||
| -rw-r--r-- | include/sparse/netinet/in.h | 95 | ||||
| -rw-r--r-- | include/sparse/netinet/ip6.h | 61 | ||||
| -rw-r--r-- | include/sparse/sys/socket.h | 133 | ||||
| -rw-r--r-- | include/sparse/sys/wait.h | 34 |
9 files changed, 578 insertions, 0 deletions
diff --git a/include/automake.mk b/include/automake.mk index 5c07a6aac..f34e5c9bf 100644 --- a/include/automake.mk +++ b/include/automake.mk @@ -1,3 +1,4 @@ include include/linux/automake.mk include include/openflow/automake.mk include include/openvswitch/automake.mk +include include/sparse/automake.mk diff --git a/include/sparse/arpa/inet.h b/include/sparse/arpa/inet.h new file mode 100644 index 000000000..c545f29d8 --- /dev/null +++ b/include/sparse/arpa/inet.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2011 Nicira Networks. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CHECKER__ +#error "Use this header only with sparse. It is not a correct implementation." +#endif + +#include <netinet/in.h> diff --git a/include/sparse/assert.h b/include/sparse/assert.h new file mode 100644 index 000000000..f396761a5 --- /dev/null +++ b/include/sparse/assert.h @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2011 Nicira Networks. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CHECKER__ +#error "Use this header only with sparse. It is not a correct implementation." +#endif + +extern void __ovs_assert(_Bool); +#define assert(EXPRESSION) __ovs_assert(EXPRESSION) diff --git a/include/sparse/automake.mk b/include/sparse/automake.mk new file mode 100644 index 000000000..1a77500b9 --- /dev/null +++ b/include/sparse/automake.mk @@ -0,0 +1,8 @@ +noinst_HEADERS += \ + include/sparse/arpa/inet.h \ + include/sparse/assert.h \ + include/sparse/math.h \ + include/sparse/netinet/in.h \ + include/sparse/netinet/ip6.h \ + include/sparse/sys/socket.h \ + include/sparse/sys/wait.h diff --git a/include/sparse/math.h b/include/sparse/math.h new file mode 100644 index 000000000..884c6de87 --- /dev/null +++ b/include/sparse/math.h @@ -0,0 +1,203 @@ +/* + * Copyright (c) 2011 Nicira Networks. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CHECKER__ +#error "Use this header only with sparse. It is not a correct implementation." +#endif + +#ifndef __SYS_MATH_SPARSE +#define __SYS_MATH_SPARSE 1 + +double acos(double); +float acosf(float); +double acosh(double); +float acoshf(float); +long double acoshl(long double); +long double acosl(long double); +double asin(double); +float asinf(float); +double asinh(double); +float asinhf(float); +long double asinhl(long double); +long double asinl(long double); +double atan(double); +double atan2(double, double); +float atan2f(float, float); +long double atan2l(long double, long double); +float atanf(float); +double atanh(double); +float atanhf(float); +long double atanhl(long double); +long double atanl(long double); +double cbrt(double); +float cbrtf(float); +long double cbrtl(long double); +double ceil(double); +float ceilf(float); +long double ceill(long double); +double copysign(double, double); +float copysignf(float, float); +long double copysignl(long double, long double); +double cos(double); +float cosf(float); +double cosh(double); +float coshf(float); +long double coshl(long double); +long double cosl(long double); +double erf(double); +double erfc(double); +float erfcf(float); +long double erfcl(long double); +float erff(float); +long double erfl(long double); +double exp(double); +double exp2(double); +float exp2f(float); +long double exp2l(long double); +float expf(float); +long double expl(long double); +double expm1(double); +float expm1f(float); +long double expm1l(long double); +double fabs(double); +float fabsf(float); +long double fabsl(long double); +double fdim(double, double); +float fdimf(float, float); +long double fdiml(long double, long double); +double floor(double); +float floorf(float); +long double floorl(long double); +double fma(double, double, double); +float fmaf(float, float, float); +long double fmal(long double, long double, long double); +double fmax(double, double); +float fmaxf(float, float); +long double fmaxl(long double, long double); +double fmin(double, double); +float fminf(float, float); +long double fminl(long double, long double); +double fmod(double, double); +float fmodf(float, float); +long double fmodl(long double, long double); +double frexp(double, int *); +float frexpf(float value, int *); +long double frexpl(long double value, int *); +double hypot(double, double); +float hypotf(float, float); +long double hypotl(long double, long double); +int ilogb(double); +int ilogbf(float); +int ilogbl(long double); +double j0(double); +double j1(double); +double jn(int, double); +double ldexp(double, int); +float ldexpf(float, int); +long double ldexpl(long double, int); +double lgamma(double); +float lgammaf(float); +long double lgammal(long double); +long long llrint(double); +long long llrintf(float); +long long llrintl(long double); +long long llround(double); +long long llroundf(float); +long long llroundl(long double); +double log(double); +double log10(double); +float log10f(float); +long double log10l(long double); +double log1p(double); +float log1pf(float); +long double log1pl(long double); +double log2(double); +float log2f(float); +long double log2l(long double); +double logb(double); +float logbf(float); +long double logbl(long double); +float logf(float); +long double logl(long double); +long lrint(double); +long lrintf(float); +long lrintl(long double); +long lround(double); +long lroundf(float); +long lroundl(long double); +double modf(double, double *); +float modff(float, float *); +long double modfl(long double, long double *); +double nan(const char *); +float nanf(const char *); +long double nanl(const char *); +double nearbyint(double); +float nearbyintf(float); +long double nearbyintl(long double); +double nextafter(double, double); +float nextafterf(float, float); +long double nextafterl(long double, long double); +double nexttoward(double, long double); +float nexttowardf(float, long double); +long double nexttowardl(long double, long double); +double pow(double, double); +float powf(float, float); +long double powl(long double, long double); +double remainder(double, double); +float remainderf(float, float); +long double remainderl(long double, long double); +double remquo(double, double, int *); +float remquof(float, float, int *); +long double remquol(long double, long double, int *); +double rint(double); +float rintf(float); +long double rintl(long double); +double round(double); +float roundf(float); +long double roundl(long double); +double scalb(double, double); +double scalbln(double, long); +float scalblnf(float, long); +long double scalblnl(long double, long); +double scalbn(double, int); +float scalbnf(float, int); +long double scalbnl(long double, int); +double sin(double); +float sinf(float); +double sinh(double); +float sinhf(float); +long double sinhl(long double); +long double sinl(long double); +double sqrt(double); +float sqrtf(float); +long double sqrtl(long double); +double tan(double); +float tanf(float); +double tanh(double); +float tanhf(float); +long double tanhl(long double); +long double tanl(long double); +double tgamma(double); +float tgammaf(float); +long double tgammal(long double); +double trunc(double); +float truncf(float); +long double truncl(long double); +double y0(double); +double y1(double); +double yn(int, double); + +#endif /* <sys/math.h> for sparse */ diff --git a/include/sparse/netinet/in.h b/include/sparse/netinet/in.h new file mode 100644 index 000000000..d86431ada --- /dev/null +++ b/include/sparse/netinet/in.h @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2011 Nicira Networks. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CHECKER__ +#error "Use this header only with sparse. It is not a correct implementation." +#endif + +#ifndef __NETINET_IN_SPARSE +#define __NETINET_IN_SPARSE 1 + +#include "openvswitch/types.h" +#include <inttypes.h> +#include <sys/socket.h> + +typedef ovs_be16 in_port_t; +typedef ovs_be32 in_addr_t; + +struct in_addr { + in_addr_t s_addr; +}; + +struct sockaddr_in { + sa_family_t sin_family; + in_port_t sin_port; + struct in_addr sin_addr; +}; + +struct in6_addr { + union { + uint8_t u_s6_addr[16]; + } u; +}; + +#define s6_addr u.u_s6_addr + +extern const struct in6_addr in6addr_any; + +#define IPPROTO_IP 0 +#define IPPROTO_HOPOPTS 0 +#define IPPROTO_ICMP 1 +#define IPPROTO_TCP 6 +#define IPPROTO_UDP 17 +#define IPPROTO_ROUTING 43 +#define IPPROTO_FRAGMENT 44 +#define IPPROTO_AH 51 +#define IPPROTO_ICMPV6 58 +#define IPPROTO_NONE 59 +#define IPPROTO_DSTOPTS 60 + +#define INADDR_ANY 0x00000000 +#define INADDR_BROADCAST 0xffffffff +#define INADDR_NONE 0xffffffff + +#define INET6_ADDRSTRLEN 46 + +static inline ovs_be32 htonl(uint32_t x) +{ + return (OVS_FORCE ovs_be32) x; +} + +static inline ovs_be16 htons(uint16_t x) +{ + return (OVS_FORCE ovs_be16) x; +} + +static inline uint32_t ntohl(ovs_be32 x) +{ + return (OVS_FORCE uint32_t) x; +} + +static inline uint16_t ntohs(ovs_be16 x) +{ + return (OVS_FORCE uint16_t) x; +} + +in_addr_t inet_addr(const char *); +int inet_aton (const char *, struct in_addr *); +char *inet_ntoa(struct in_addr); +const char *inet_ntop(int, const void *, char *, socklen_t); +int inet_pton(int, const char *, void *); + +#endif /* <netinet/in.h> sparse */ diff --git a/include/sparse/netinet/ip6.h b/include/sparse/netinet/ip6.h new file mode 100644 index 000000000..c6608a144 --- /dev/null +++ b/include/sparse/netinet/ip6.h @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2011 Nicira Networks. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CHECKER__ +#error "Use this header only with sparse. It is not a correct implementation." +#endif + +#ifndef __NETINET_IP6_SPARSE +#define __NETINET_IP6_SPARSE 1 + +#include <netinet/in.h> + +struct ip6_hdr { + union { + struct ip6_hdrctl { + ovs_be32 ip6_un1_flow; + ovs_be16 ip6_un1_plen; + uint8_t ip6_un1_nxt; + uint8_t ip6_un1_hlim; + } ip6_un1; + uint8_t ip6_un2_vfc; + } ip6_ctlun; + struct in6_addr ip6_src; + struct in6_addr ip6_dst; +}; + +#define ip6_vfc ip6_ctlun.ip6_un2_vfc +#define ip6_flow ip6_ctlun.ip6_un1.ip6_un1_flow +#define ip6_plen ip6_ctlun.ip6_un1.ip6_un1_plen +#define ip6_nxt ip6_ctlun.ip6_un1.ip6_un1_nxt +#define ip6_hlim ip6_ctlun.ip6_un1.ip6_un1_hlim +#define ip6_hops ip6_ctlun.ip6_un1.ip6_un1_hlim + +struct ip6_ext { + uint8_t ip6e_nxt; + uint8_t ip6e_len; +}; + +struct ip6_frag { + uint8_t ip6f_nxt; + uint8_t ip6f_reserved; + ovs_be16 ip6f_offlg; + ovs_be32 ip6f_ident; +}; + +#define IP6F_OFF_MASK ((OVS_FORCE ovs_be16) 0xfff8) + +#endif /* netinet/ip6.h sparse */ diff --git a/include/sparse/sys/socket.h b/include/sparse/sys/socket.h new file mode 100644 index 000000000..89e3c2dc2 --- /dev/null +++ b/include/sparse/sys/socket.h @@ -0,0 +1,133 @@ +/* + * Copyright (c) 2011 Nicira Networks. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CHECKER__ +#error "Use this header only with sparse. It is not a correct implementation." +#endif + +#ifndef __SYS_SOCKET_SPARSE +#define __SYS_SOCKET_SPARSE 1 + +#include "openvswitch/types.h" +#include <sys/uio.h> + +typedef unsigned short int sa_family_t; +typedef __socklen_t socklen_t; + +struct sockaddr { + sa_family_t sa_family; + char sa_data[64]; +}; + +struct sockaddr_storage { + sa_family_t ss_family; + char sa_data[64]; +}; + +struct msghdr { + void *msg_name; + socklen_t msg_namelen; + struct iovec *msg_iov; + int msg_iovlen; + void *msg_control; + socklen_t msg_controllen; + int msg_flags; +}; + +enum { + SOCK_DGRAM, + SOCK_RAW, + SOCK_SEQPACKET, + SOCK_STREAM +}; + +enum { + SOL_SOCKET +}; + +enum { + SO_ACCEPTCONN, + SO_BROADCAST, + SO_DEBUG, + SO_DONTROUTE, + SO_ERROR, + SO_KEEPALIVE, + SO_LINGER, + SO_OOBINLINE, + SO_RCVBUF, + SO_RCVLOWAT, + SO_RCVTIMEO, + SO_REUSEADDR, + SO_SNDBUF, + SO_SNDLOWAT, + SO_SNDTIMEO, + SO_TYPE +}; + +enum { + MSG_CTRUNC, + MSG_DONTROUTE, + MSG_EOR, + MSG_OOB, + MSG_NOSIGNAL, + MSG_PEEK, + MSG_TRUNC, + MSG_WAITALL, + MSG_DONTWAIT +}; + +enum { + AF_UNSPEC, + PF_UNSPEC = AF_UNSPEC, + AF_INET, + PF_INET = AF_INET, + AF_INET6, + PF_INET6 = AF_INET6, + AF_UNIX, + PF_UNIX = AF_UNIX, + AF_NETLINK, + PF_NETLINK = AF_NETLINK, + AF_PACKET, + PF_PACKET = AF_PACKET +}; + +enum { + SHUT_RD, + SHUT_RDWR, + SHUT_WR +}; + +int accept(int, struct sockaddr *, socklen_t *); +int bind(int, const struct sockaddr *, socklen_t); +int connect(int, const struct sockaddr *, socklen_t); +int getpeername(int, struct sockaddr *, socklen_t *); +int getsockname(int, struct sockaddr *, socklen_t *); +int getsockopt(int, int, int, void *, socklen_t *); +int listen(int, int); +ssize_t recv(int, void *, size_t, int); +ssize_t recvfrom(int, void *, size_t, int, struct sockaddr *, socklen_t *); +ssize_t recvmsg(int, struct msghdr *, int); +ssize_t send(int, const void *, size_t, int); +ssize_t sendmsg(int, const struct msghdr *, int); +ssize_t sendto(int, const void *, size_t, int, const struct sockaddr *, + socklen_t); +int setsockopt(int, int, int, const void *, socklen_t); +int shutdown(int, int); +int sockatmark(int); +int socket(int, int, int); +int socketpair(int, int, int, int[2]); + +#endif /* <sys/socket.h> for sparse */ diff --git a/include/sparse/sys/wait.h b/include/sparse/sys/wait.h new file mode 100644 index 000000000..31e1d76a6 --- /dev/null +++ b/include/sparse/sys/wait.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2011 Nicira Networks. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CHECKER__ +#error "Use this header only with sparse. It is not a correct implementation." +#endif + +#ifndef __SYS_WAIT_SPARSE +#define __SYS_WAIT_SPARSE 1 + +#include_next <sys/wait.h> + +#undef wait +#define wait(a) rpl_wait(a) +pid_t rpl_wait(int *); + +#undef waitpid +#define waitpid(a, b, c) rpl_waitpid(a, b, c) +pid_t rpl_waitpid(pid_t, int *, int); + +#endif /* <sys/wait.h> for sparse */ |
