[klibc] [PATCH 13/16] Define types and values in sys/socket.h

Louis Rilling Louis.Rilling at kerlabs.com
Tue Mar 16 04:29:43 PDT 2010


On 01/03/10 23:46 -0800, Mike Waychison wrote:
> It seems a lot of #defines and types in linux/socket.h are now hidden behind
> __KERNEL__.  Include them in sys/socket.h for the time being.
> 
> At the same time, pull in asm/socket.h and linux/uio.h as they aren't
> implicitly pulled in anymore.

Unfortunately this prevents from building klibc with earlier kernels (e.g.
2.6.26 on debian Lenny).

What's the status of supporting earlier kernels?

  gcc -Wp,-MD,usr/klibc/inet/.inet_ntoa.o.d  -nostdinc -iwithprefix include -I/home/louis/klibc.git/usr/include/arch/x86_64 -Iusr/include/arch/x86_64 -I/home/louis/klibc.git/usr/include/bits64 -Iusr/include/bits64 -I/home/louis/klibc.git/usr/klibc/../include -Iusr/klibc/../include -I/home/louis/klibc.git/usr/include -Iusr/include -I/home/louis/klibc.git/linux/include -Ilinux/include -I/home/louis/klibc.git/linux/arch/x86/include -Ilinux/arch/x86/include -D__KLIBC__=1 -D__KLIBC_MINOR__=5 -D_BITSIZE=64 -fno-stack-protector -m64 -Os -fno-asynchronous-unwind-tables -fomit-frame-pointer -falign-functions=1 -falign-jumps=1 -falign-loops=1 -W -Wall -Wno-sign-compare -Wno-unused-parameter -c -o usr/klibc/inet/inet_ntoa.o usr/klibc/inet/inet_ntoa.c
In file included from /home/louis/klibc.git/usr/klibc/../include/netinet/in.h:12,
                 from /home/louis/klibc.git/usr/klibc/../include/arpa/inet.h:12,
                 from usr/klibc/inet/inet_ntoa.c:7:
/home/louis/klibc.git/usr/klibc/../include/sys/socket.h:146: error: redefinition of typedef ?sa_family_t?
/home/louis/klibc.git/linux/include/linux/socket.h:31: error: previous declaration of ?sa_family_t? was here
/home/louis/klibc.git/usr/klibc/../include/sys/socket.h:147: error: redefinition of ?struct sockaddr?
/home/louis/klibc.git/usr/klibc/../include/sys/socket.h:152: error: redefinition of ?struct msghdr?
make[4]: *** [usr/klibc/inet/inet_ntoa.o] Erreur 1
make[3]: *** [all] Erreur 2
make[2]: *** [klibc] Erreur 2
make[2]: quittant le répertoire « /home/louis/klibc.git »
make[1]: *** [override_dh_auto_build] Erreur 2
make[1]: quittant le répertoire « /home/louis/klibc.git »
make: *** [build] Erreur 2

Thanks,

Louis

> 
> Signed-off-by: Mike Waychison <mikew at google.com>
> ---
>  usr/include/sys/socket.h |  133 ++++++++++++++++++++++++++++++++++++++++++++++
>  1 files changed, 132 insertions(+), 1 deletions(-)
> 
> diff --git a/usr/include/sys/socket.h b/usr/include/sys/socket.h
> index 7d47087..c69caaf 100644
> --- a/usr/include/sys/socket.h
> +++ b/usr/include/sys/socket.h
> @@ -9,6 +9,8 @@
>  #include <klibc/compiler.h>
>  #include <klibc/sysconfig.h>
>  #include <linux/socket.h>
> +#include <linux/uio.h>
> +#include <asm/socket.h>
>  #if _KLIBC_HAS_ARCHSOCKET_H
>  #include <klibc/archsocket.h>
>  #endif
> @@ -17,7 +19,7 @@
>     that are hidden under #ifdef __KERNEL__... what a brilliant idea!
>     These are the "common" definitions; if not appropriate, override
>     them in <klibc/archsocket.h>. */
> -   
> +
>  #ifndef SOCK_STREAM
>  # define SOCK_STREAM    1
>  # define SOCK_DGRAM     2
> @@ -27,7 +29,136 @@
>  # define SOCK_PACKET    10
>  #endif
>  
> +#ifndef AF_INET
> +#define AF_UNSPEC	0
> +#define AF_UNIX		1	/* Unix domain sockets 		*/
> +#define AF_LOCAL	1	/* POSIX name for AF_UNIX	*/
> +#define AF_INET		2	/* Internet IP Protocol 	*/
> +#define AF_AX25		3	/* Amateur Radio AX.25 		*/
> +#define AF_IPX		4	/* Novell IPX 			*/
> +#define AF_APPLETALK	5	/* AppleTalk DDP 		*/
> +#define AF_NETROM	6	/* Amateur Radio NET/ROM 	*/
> +#define AF_BRIDGE	7	/* Multiprotocol bridge 	*/
> +#define AF_ATMPVC	8	/* ATM PVCs			*/
> +#define AF_X25		9	/* Reserved for X.25 project 	*/
> +#define AF_INET6	10	/* IP version 6			*/
> +#define AF_ROSE		11	/* Amateur Radio X.25 PLP	*/
> +#define AF_DECnet	12	/* Reserved for DECnet project	*/
> +#define AF_NETBEUI	13	/* Reserved for 802.2LLC project*/
> +#define AF_SECURITY	14	/* Security callback pseudo AF */
> +#define AF_KEY		15      /* PF_KEY key management API */
> +#define AF_NETLINK	16
> +#define AF_ROUTE	AF_NETLINK /* Alias to emulate 4.4BSD */
> +#define AF_PACKET	17	/* Packet family		*/
> +#define AF_ASH		18	/* Ash				*/
> +#define AF_ECONET	19	/* Acorn Econet			*/
> +#define AF_ATMSVC	20	/* ATM SVCs			*/
> +#define AF_RDS		21	/* RDS sockets 			*/
> +#define AF_SNA		22	/* Linux SNA Project (nutters!) */
> +#define AF_IRDA		23	/* IRDA sockets			*/
> +#define AF_PPPOX	24	/* PPPoX sockets		*/
> +#define AF_WANPIPE	25	/* Wanpipe API Sockets */
> +#define AF_LLC		26	/* Linux LLC			*/
> +#define AF_CAN		29	/* Controller Area Network      */
> +#define AF_TIPC		30	/* TIPC sockets			*/
> +#define AF_BLUETOOTH	31	/* Bluetooth sockets 		*/
> +#define AF_IUCV		32	/* IUCV sockets			*/
> +#define AF_RXRPC	33	/* RxRPC sockets 		*/
> +#define AF_ISDN		34	/* mISDN sockets 		*/
> +#define AF_PHONET	35	/* Phonet sockets		*/
> +#define AF_IEEE802154	36	/* IEEE802154 sockets		*/
> +#define AF_MAX		37	/* For now.. */
> +#endif // !AF_INET
> +
> +#ifndef PF_UNSPEC
> +#define PF_UNSPEC	AF_UNSPEC
> +#define PF_UNIX		AF_UNIX
> +#define PF_LOCAL	AF_LOCAL
> +#define PF_INET		AF_INET
> +#define PF_AX25		AF_AX25
> +#define PF_IPX		AF_IPX
> +#define PF_APPLETALK	AF_APPLETALK
> +#define	PF_NETROM	AF_NETROM
> +#define PF_BRIDGE	AF_BRIDGE
> +#define PF_ATMPVC	AF_ATMPVC
> +#define PF_X25		AF_X25
> +#define PF_INET6	AF_INET6
> +#define PF_ROSE		AF_ROSE
> +#define PF_DECnet	AF_DECnet
> +#define PF_NETBEUI	AF_NETBEUI
> +#define PF_SECURITY	AF_SECURITY
> +#define PF_KEY		AF_KEY
> +#define PF_NETLINK	AF_NETLINK
> +#define PF_ROUTE	AF_ROUTE
> +#define PF_PACKET	AF_PACKET
> +#define PF_ASH		AF_ASH
> +#define PF_ECONET	AF_ECONET
> +#define PF_ATMSVC	AF_ATMSVC
> +#define PF_RDS		AF_RDS
> +#define PF_SNA		AF_SNA
> +#define PF_IRDA		AF_IRDA
> +#define PF_PPPOX	AF_PPPOX
> +#define PF_WANPIPE	AF_WANPIPE
> +#define PF_LLC		AF_LLC
> +#define PF_CAN		AF_CAN
> +#define PF_TIPC		AF_TIPC
> +#define PF_BLUETOOTH	AF_BLUETOOTH
> +#define PF_IUCV		AF_IUCV
> +#define PF_RXRPC	AF_RXRPC
> +#define PF_ISDN		AF_ISDN
> +#define PF_PHONET	AF_PHONET
> +#define PF_IEEE802154	AF_IEEE802154
> +#define PF_MAX		AF_MAX
> +#endif // !PF_UNSPEC
> +
> +#ifndef MSG_OOB
> +#define MSG_OOB		1
> +#define MSG_PEEK	2
> +#define MSG_DONTROUTE	4
> +#define MSG_TRYHARD     4       /* Synonym for MSG_DONTROUTE for DECnet */
> +#define MSG_CTRUNC	8
> +#define MSG_PROBE	0x10	/* Do not send. Only probe path f.e. for MTU */
> +#define MSG_TRUNC	0x20
> +#define MSG_DONTWAIT	0x40	/* Nonblocking io		 */
> +#define MSG_EOR         0x80	/* End of record */
> +#define MSG_WAITALL	0x100	/* Wait for a full request */
> +#define MSG_FIN         0x200
> +#define MSG_SYN		0x400
> +#define MSG_CONFIRM	0x800	/* Confirm path validity */
> +#define MSG_RST		0x1000
> +#define MSG_ERRQUEUE	0x2000	/* Fetch message from error queue */
> +#define MSG_NOSIGNAL	0x4000	/* Do not generate SIGPIPE */
> +#define MSG_MORE	0x8000	/* Sender will send more */
> +
> +#define MSG_EOF         MSG_FIN
> +
> +#define MSG_CMSG_CLOEXEC 0x40000000	/* Set close_on_exit for file
> +					   descriptor received through
> +					   SCM_RIGHTS */
> +#if defined(CONFIG_COMPAT)
> +#define MSG_CMSG_COMPAT	0x80000000	/* This message needs 32 bit fixups */
> +#else
> +#define MSG_CMSG_COMPAT	0		/* We never have 32 bit fixups */
> +#endif
> +#endif // !MSG_OOB
> +
> +/* These types is hidden under __KERNEL__ in kernel sources */
> +typedef unsigned short sa_family_t;
> +struct sockaddr {
> +	sa_family_t     sa_family;      /* address family, AF_xxx       */
> +	char            sa_data[14];    /* 14 bytes of protocol address */
> +};
>  typedef int socklen_t;
> +struct msghdr {
> +	void *msg_name;
> +	int msg_namelen;
> +	struct iovec *msg_iov;
> +	size_t msg_iovlen;
> +	void *msg_control;
> +	size_t msg_controllen;
> +	unsigned msg_flags;
> +};
> +
>  
>  __extern int socket(int, int, int);
>  __extern int bind(int, struct sockaddr *, int);
> 
> _______________________________________________
> klibc mailing list
> klibc at zytor.com
> http://www.zytor.com/mailman/listinfo/klibc

-- 
Dr Louis Rilling			Kerlabs
Skype: louis.rilling			Batiment Germanium
Phone: (+33|0) 6 80 89 08 23		80 avenue des Buttes de Coesmes
http://www.kerlabs.com/			35700 Rennes
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
URL: <http://www.zytor.com/pipermail/klibc/attachments/20100316/9797b0bf/attachment-0001.sig>


More information about the klibc mailing list