diff options
author | Ben Pfaff <blp@nicira.com> | 2011-10-05 10:42:34 -0700 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2011-10-12 16:27:09 -0700 |
commit | 9ea0bccc83a84458d934966eae15c78f3ee2bac8 (patch) | |
tree | ecf1a6b0e0667ab14a8d8a8af3ab007114468448 /include/linux | |
parent | 09ded0ad489630236210a02f2d315816e558d701 (diff) | |
download | openvswitch-9ea0bccc83a84458d934966eae15c78f3ee2bac8.tar.gz |
datapath-protocol: Use Linux kernel types directly.
We want datapath-protocol.h to be acceptable as a Linux kernel header, so
it must use Linux kernel types and must not have references to Open vSwitch
symbols or header files. This commit primarily makes that change to
datapath-protocol.h.
At the same time, at least for now we also want datapath-protocol.h to be
usable on non-Linux platforms, so we need some kind of compatiblity. Thus,
this commit also introduces a <linux/types.h> header file that defines the
necessary Linux kernel types on non-Linux platforms.
In turn, this requires openvswitch/types.h to use the Linux types directly
for ovs_be<N>; otherwise, sparse complains because now __be<N> and
ovs_be<N> are incompatible from its perspective, so this commit makes that
change too.
I don't have a non-Linux kernel platform readily available, so I only
tested the non-Linux part of the linux/types.h substitute by forcing that
case to be triggered with #if 0. It worked, except for errors in actual
Linux kernel headers included explicitly from OVS source files, so I think
it's likely to work in practice.
Bug #7559.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/automake.mk | 1 | ||||
-rw-r--r-- | include/linux/types.h | 47 |
2 files changed, 48 insertions, 0 deletions
diff --git a/include/linux/automake.mk b/include/linux/automake.mk new file mode 100644 index 000000000..aa7e7392a --- /dev/null +++ b/include/linux/automake.mk @@ -0,0 +1 @@ +noinst_HEADERS += include/linux/types.h diff --git a/include/linux/types.h b/include/linux/types.h new file mode 100644 index 000000000..845924ec0 --- /dev/null +++ b/include/linux/types.h @@ -0,0 +1,47 @@ +/* + * 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 LINUX_TYPES_H +#define LINUX_TYPES_H 1 + +/* On Linux, this header file just includes <linux/types.h>. + * + * On other platforms, this header file implements just enough of + * <linux/types.h> to allow datapath-protocol.h to work, that is, it defines + * the __u<N> and __be<N> types. */ + +#if __KERNEL__ || HAVE_LINUX_TYPES_H +#include_next <linux/types.h> +#else /* no <linux/types.h> */ +#include <stdint.h> + +#ifdef __CHECKER__ +#define __bitwise__ __attribute__((bitwise)) +#else +#define __bitwise__ +#endif + +typedef uint8_t __u8; +typedef uint16_t __u16; +typedef uint32_t __u32; +typedef uint64_t __u64; + +typedef uint16_t __bitwise__ __be16; +typedef uint32_t __bitwise__ __be32; +typedef uint64_t __bitwise__ __be64; +#endif /* no <linux/types.h> */ + +#endif /* <linux/types.h> */ |