X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Flinux%2Fvs_socket.h;h=d95fcd30480c2da953ea2af833e2b9952ffe3777;hb=a2f44b27303a5353859d77a3e96a1d3f33f56ab7;hp=9173bfe26f2e5f5590e055c550c74c9b1c103650;hpb=e6a27dba1cf83d871b2dfcd64f04f12a67e3f4d5;p=linux-2.6.git diff --git a/include/linux/vs_socket.h b/include/linux/vs_socket.h index 9173bfe26..d95fcd304 100644 --- a/include/linux/vs_socket.h +++ b/include/linux/vs_socket.h @@ -1,7 +1,10 @@ -#ifndef _VX_VS_SOCKET_H -#define _VX_VS_SOCKET_H +#ifndef _VS_SOCKET_H +#define _VS_SOCKET_H #include "vserver/debug.h" +#include "vserver/base.h" +#include "vserver/cacct.h" +#include "vserver/context.h" /* socket accounting */ @@ -10,13 +13,20 @@ static inline int vx_sock_type(int family) { - int type = 4; - - if (family > 0 && family < 3) - type = family; - else if (family == PF_INET6) - type = 3; - return type; + switch (family) { + case PF_UNSPEC: + return VXA_SOCK_UNSPEC; + case PF_UNIX: + return VXA_SOCK_UNIX; + case PF_INET: + return VXA_SOCK_INET; + case PF_INET6: + return VXA_SOCK_INET6; + case PF_PACKET: + return VXA_SOCK_PACKET; + default: + return VXA_SOCK_OTHER; + } } #define vx_acc_sock(v,f,p,s) \ @@ -28,8 +38,8 @@ static inline void __vx_acc_sock(struct vx_info *vxi, if (vxi) { int type = vx_sock_type(family); - atomic_inc(&vxi->cacct.sock[type][pos].count); - atomic_add(size, &vxi->cacct.sock[type][pos].total); + atomic_long_inc(&vxi->cacct.sock[type][pos].count); + atomic_long_add(size, &vxi->cacct.sock[type][pos].total); } }