include/posix: rearrange for standard use of extern "C"
Consistently place C++ use of extern "C" after all include directives, within the negative branch of _ASMLANGUAGE if used. Background from issue #17997: Declarations that use C linkage should be placed within extern "C" so the language linkage is correct when the header is included by a C++ compiler. Similarly #include directives should be outside the extern "C" to ensure the language-specific default linkage is applied to any declarations provided by the included header. See: https://en.cppreference.com/w/cpp/language/language_linkage Signed-off-by: Peter Bigot <peter.bigot@nordicsemi.no>
This commit is contained in:
parent
6554a5e5b6
commit
ca6e3dcdc4
10 changed files with 56 additions and 37 deletions
|
@ -6,12 +6,12 @@
|
||||||
#ifndef ZEPHYR_INCLUDE_POSIX_ARPA_INET_H_
|
#ifndef ZEPHYR_INCLUDE_POSIX_ARPA_INET_H_
|
||||||
#define ZEPHYR_INCLUDE_POSIX_ARPA_INET_H_
|
#define ZEPHYR_INCLUDE_POSIX_ARPA_INET_H_
|
||||||
|
|
||||||
|
#include <net/socket.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <net/socket.h>
|
|
||||||
|
|
||||||
static inline char *inet_ntop(sa_family_t family, const void *src, char *dst,
|
static inline char *inet_ntop(sa_family_t family, const void *src, char *dst,
|
||||||
size_t size)
|
size_t size)
|
||||||
{
|
{
|
||||||
|
|
|
@ -6,16 +6,16 @@
|
||||||
#ifndef ZEPHYR_INCLUDE_POSIX_DIRENT_H_
|
#ifndef ZEPHYR_INCLUDE_POSIX_DIRENT_H_
|
||||||
#define ZEPHYR_INCLUDE_POSIX_DIRENT_H_
|
#define ZEPHYR_INCLUDE_POSIX_DIRENT_H_
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include "posix_types.h"
|
#include "posix_types.h"
|
||||||
|
|
||||||
#ifdef CONFIG_POSIX_FS
|
#ifdef CONFIG_POSIX_FS
|
||||||
#include <fs/fs.h>
|
#include <fs/fs.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef void DIR;
|
typedef void DIR;
|
||||||
|
|
||||||
struct dirent {
|
struct dirent {
|
||||||
|
@ -28,10 +28,10 @@ extern DIR *opendir(const char *dirname);
|
||||||
extern int closedir(DIR *dirp);
|
extern int closedir(DIR *dirp);
|
||||||
extern struct dirent *readdir(DIR *dirp);
|
extern struct dirent *readdir(DIR *dirp);
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif /* CONFIG_POSIX_FS */
|
||||||
|
|
||||||
#endif /* ZEPHYR_INCLUDE_POSIX_DIRENT_H_ */
|
#endif /* ZEPHYR_INCLUDE_POSIX_DIRENT_H_ */
|
||||||
|
|
|
@ -6,12 +6,12 @@
|
||||||
#ifndef ZEPHYR_INCLUDE_POSIX_NETDB_H_
|
#ifndef ZEPHYR_INCLUDE_POSIX_NETDB_H_
|
||||||
#define ZEPHYR_INCLUDE_POSIX_NETDB_H_
|
#define ZEPHYR_INCLUDE_POSIX_NETDB_H_
|
||||||
|
|
||||||
|
#include <net/socket.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <net/socket.h>
|
|
||||||
|
|
||||||
#define addrinfo zsock_addrinfo
|
#define addrinfo zsock_addrinfo
|
||||||
|
|
||||||
static inline int getaddrinfo(const char *host, const char *service,
|
static inline int getaddrinfo(const char *host, const char *service,
|
||||||
|
|
|
@ -7,16 +7,16 @@
|
||||||
#ifndef ZEPHYR_INCLUDE_POSIX_SYS_TYPES_H_
|
#ifndef ZEPHYR_INCLUDE_POSIX_SYS_TYPES_H_
|
||||||
#define ZEPHYR_INCLUDE_POSIX_SYS_TYPES_H_
|
#define ZEPHYR_INCLUDE_POSIX_SYS_TYPES_H_
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CONFIG_ARCH_POSIX
|
#ifndef CONFIG_ARCH_POSIX
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <kernel.h>
|
#include <kernel.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef unsigned long useconds_t;
|
typedef unsigned long useconds_t;
|
||||||
|
|
||||||
/* time related attributes */
|
/* time related attributes */
|
||||||
|
|
|
@ -7,14 +7,14 @@
|
||||||
#ifndef ZEPHYR_INCLUDE_POSIX_PTHREAD_KEY_H_
|
#ifndef ZEPHYR_INCLUDE_POSIX_PTHREAD_KEY_H_
|
||||||
#define ZEPHYR_INCLUDE_POSIX_PTHREAD_KEY_H_
|
#define ZEPHYR_INCLUDE_POSIX_PTHREAD_KEY_H_
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_PTHREAD_IPC
|
#ifdef CONFIG_PTHREAD_IPC
|
||||||
#include <sys/slist.h>
|
#include <sys/slist.h>
|
||||||
#include <zephyr/types.h>
|
#include <zephyr/types.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef u32_t pthread_once_t;
|
typedef u32_t pthread_once_t;
|
||||||
|
|
||||||
/* pthread_key */
|
/* pthread_key */
|
||||||
|
|
|
@ -6,13 +6,13 @@
|
||||||
#ifndef ZEPHYR_INCLUDE_POSIX_SEMAPHORE_H_
|
#ifndef ZEPHYR_INCLUDE_POSIX_SEMAPHORE_H_
|
||||||
#define ZEPHYR_INCLUDE_POSIX_SEMAPHORE_H_
|
#define ZEPHYR_INCLUDE_POSIX_SEMAPHORE_H_
|
||||||
|
|
||||||
|
#include <posix/time.h>
|
||||||
|
#include "posix_types.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <posix/time.h>
|
|
||||||
#include "posix_types.h"
|
|
||||||
|
|
||||||
int sem_destroy(sem_t *semaphore);
|
int sem_destroy(sem_t *semaphore);
|
||||||
int sem_getvalue(sem_t *restrict semaphore, int *restrict value);
|
int sem_getvalue(sem_t *restrict semaphore, int *restrict value);
|
||||||
int sem_init(sem_t *semaphore, int pshared, unsigned int value);
|
int sem_init(sem_t *semaphore, int pshared, unsigned int value);
|
||||||
|
|
|
@ -6,12 +6,12 @@
|
||||||
#ifndef ZEPHYR_INCLUDE_POSIX_SIGNAL_H_
|
#ifndef ZEPHYR_INCLUDE_POSIX_SIGNAL_H_
|
||||||
#define ZEPHYR_INCLUDE_POSIX_SIGNAL_H_
|
#define ZEPHYR_INCLUDE_POSIX_SIGNAL_H_
|
||||||
|
|
||||||
|
#include "posix_types.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "posix_types.h"
|
|
||||||
|
|
||||||
#ifndef SIGEV_NONE
|
#ifndef SIGEV_NONE
|
||||||
#define SIGEV_NONE 1
|
#define SIGEV_NONE 1
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -6,13 +6,13 @@
|
||||||
#ifndef ZEPHYR_INCLUDE_POSIX_SYS_SOCKET_H_
|
#ifndef ZEPHYR_INCLUDE_POSIX_SYS_SOCKET_H_
|
||||||
#define ZEPHYR_INCLUDE_POSIX_SYS_SOCKET_H_
|
#define ZEPHYR_INCLUDE_POSIX_SYS_SOCKET_H_
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <net/socket.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <net/socket.h>
|
|
||||||
|
|
||||||
static inline int socket(int family, int type, int proto)
|
static inline int socket(int family, int type, int proto)
|
||||||
{
|
{
|
||||||
return zsock_socket(family, type, proto);
|
return zsock_socket(family, type, proto);
|
||||||
|
|
|
@ -6,10 +6,6 @@
|
||||||
#ifndef ZEPHYR_INCLUDE_POSIX_TIME_H_
|
#ifndef ZEPHYR_INCLUDE_POSIX_TIME_H_
|
||||||
#define ZEPHYR_INCLUDE_POSIX_TIME_H_
|
#define ZEPHYR_INCLUDE_POSIX_TIME_H_
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_NEWLIB_LIBC
|
#ifdef CONFIG_NEWLIB_LIBC
|
||||||
/* Kludge to support outdated newlib version as used in SDK 0.10 for Xtensa */
|
/* Kludge to support outdated newlib version as used in SDK 0.10 for Xtensa */
|
||||||
#include <newlib.h>
|
#include <newlib.h>
|
||||||
|
@ -17,20 +13,30 @@ extern "C" {
|
||||||
#ifdef __NEWLIB__
|
#ifdef __NEWLIB__
|
||||||
/* Newever Newlib 3.x+ */
|
/* Newever Newlib 3.x+ */
|
||||||
#include <sys/_timespec.h>
|
#include <sys/_timespec.h>
|
||||||
#else
|
#else /* __NEWLIB__ */
|
||||||
/* Workaround for older Newlib 2.x, as used by Xtensa. It lacks sys/_timeval.h,
|
/* Workaround for older Newlib 2.x, as used by Xtensa. It lacks sys/_timeval.h,
|
||||||
* so mimic it here.
|
* so mimic it here.
|
||||||
*/
|
*/
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#ifndef __timespec_defined
|
#ifndef __timespec_defined
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
struct timespec {
|
struct timespec {
|
||||||
time_t tv_sec;
|
time_t tv_sec;
|
||||||
long tv_nsec;
|
long tv_nsec;
|
||||||
};
|
};
|
||||||
#endif
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#else
|
#endif /* __timespec_defined */
|
||||||
|
#endif /* __NEWLIB__ */
|
||||||
|
|
||||||
|
#else /* CONFIG_NEWLIB_LIBC */
|
||||||
/* Not Newlib */
|
/* Not Newlib */
|
||||||
#include <sys/_timespec.h>
|
#include <sys/_timespec.h>
|
||||||
#endif /* CONFIG_NEWLIB_LIBC */
|
#endif /* CONFIG_NEWLIB_LIBC */
|
||||||
|
@ -44,10 +50,19 @@ struct timespec {
|
||||||
*/
|
*/
|
||||||
#if !defined(__NEWLIB_H__) || (__NEWLIB__ >= 3) || \
|
#if !defined(__NEWLIB_H__) || (__NEWLIB__ >= 3) || \
|
||||||
(__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 2)
|
(__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 2)
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
struct itimerspec {
|
struct itimerspec {
|
||||||
struct timespec it_interval; /* Timer interval */
|
struct timespec it_interval; /* Timer interval */
|
||||||
struct timespec it_value; /* Timer expiration */
|
struct timespec it_value; /* Timer expiration */
|
||||||
};
|
};
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <kernel.h>
|
#include <kernel.h>
|
||||||
|
@ -55,6 +70,10 @@ struct itimerspec {
|
||||||
#include "posix_types.h"
|
#include "posix_types.h"
|
||||||
#include <posix/signal.h>
|
#include <posix/signal.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef CLOCK_REALTIME
|
#ifndef CLOCK_REALTIME
|
||||||
#define CLOCK_REALTIME 0
|
#define CLOCK_REALTIME 0
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -6,10 +6,6 @@
|
||||||
#ifndef ZEPHYR_INCLUDE_POSIX_UNISTD_H_
|
#ifndef ZEPHYR_INCLUDE_POSIX_UNISTD_H_
|
||||||
#define ZEPHYR_INCLUDE_POSIX_UNISTD_H_
|
#define ZEPHYR_INCLUDE_POSIX_UNISTD_H_
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "posix_types.h"
|
#include "posix_types.h"
|
||||||
#include "sys/stat.h"
|
#include "sys/stat.h"
|
||||||
#ifdef CONFIG_NETWORKING
|
#ifdef CONFIG_NETWORKING
|
||||||
|
@ -20,6 +16,10 @@ extern "C" {
|
||||||
#ifdef CONFIG_POSIX_API
|
#ifdef CONFIG_POSIX_API
|
||||||
#include <fs/fs.h>
|
#include <fs/fs.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
/* File related operations */
|
/* File related operations */
|
||||||
extern int close(int file);
|
extern int close(int file);
|
||||||
extern ssize_t write(int file, const void *buffer, size_t count);
|
extern ssize_t write(int file, const void *buffer, size_t count);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue