#ifndef TAIA_H #define TAIA_H #include #include #include #include #include "rnd.h" struct tai { uint64_t x; }; struct taia { struct tai sec; uint32_t nano; uint32_t atto; }; static inline void tai_pack(unsigned char *s, struct tai *t) { uint64_t x; x = t->x; s[7] = x & 255; x >>= 8; s[6] = x & 255; x >>= 8; s[5] = x & 255; x >>= 8; s[4] = x & 255; x >>= 8; s[3] = x & 255; x >>= 8; s[2] = x & 255; x >>= 8; s[1] = x & 255; x >>= 8; s[0] = x; } static inline void tai_unpack(unsigned char *s, struct tai *t) { uint64_t x; x = (unsigned char) s[0]; x <<= 8; x += (unsigned char) s[1]; x <<= 8; x += (unsigned char) s[2]; x <<= 8; x += (unsigned char) s[3]; x <<= 8; x += (unsigned char) s[4]; x <<= 8; x += (unsigned char) s[5]; x <<= 8; x += (unsigned char) s[6]; x <<= 8; x += (unsigned char) s[7]; t->x = x; } static inline void taia_pack(unsigned char *s, struct taia *t) { unsigned long x; tai_pack(s, &t->sec); s += 8; x = t->atto; s[7] = x & 255; x >>= 8; s[6] = x & 255; x >>= 8; s[5] = x & 255; x >>= 8; s[4] = x; x = t->nano; s[3] = x & 255; x >>= 8; s[2] = x & 255; x >>= 8; s[1] = x & 255; x >>= 8; s[0] = x; } static inline void taia_unpack(unsigned char *s, struct taia *t) { unsigned long x; tai_unpack(s, &t->sec); s += 8; x = (unsigned char) s[4]; x <<= 8; x += (unsigned char) s[5]; x <<= 8; x += (unsigned char) s[6]; x <<= 8; x += (unsigned char) s[7]; t->atto = x; x = (unsigned char) s[0]; x <<= 8; x += (unsigned char) s[1]; x <<= 8; x += (unsigned char) s[2]; x <<= 8; x += (unsigned char) s[3]; t->nano = x; } #define tai_unix(t, u) \ ((void) ((t)->x = 4611686018427387914ULL + \ (uint64_t) (u))) static inline void taia_now(struct taia *t) { struct timeval now; gettimeofday(&now, NULL); tai_unix(&t->sec, now.tv_sec); t->nano = 1000 * now.tv_usec + 500; /* We don't really have it, but bring some noise in. */ t->atto = secrand(); } static inline void taia_sub(struct taia *res, const struct taia *u, const struct taia *v) { unsigned long unano = u->nano; unsigned long uatto = u->atto; res->sec.x = u->sec.x - v->sec.x; res->nano = unano - v->nano; res->atto = uatto - v->atto; if (res->atto > uatto) { res->atto += 1000000000UL; --res->nano; } if (res->nano > unano) { res->nano += 1000000000UL; --res->sec.x; } } static inline void taia_add(struct taia *res, const struct taia *u, const struct taia *v) { res->sec.x = u->sec.x + v->sec.x; res->nano = u->nano + v->nano; res->atto = u->atto + v->atto; if (res->atto > 999999999UL) { res->atto -= 1000000000UL; ++res->nano; } if (res->nano > 999999999UL) { res->nano -= 1000000000UL; ++res->sec.x; } } static inline int taia_less(const struct taia *t, const struct taia *u) { if (t->sec.x < u->sec.x) return 1; if (t->sec.x > u->sec.x) return 0; if (t->nano < u->nano) return 1; if (t->nano > u->nano) return 0; return t->atto < u->atto; } extern bool taia_looks_good(struct taia *arr_taia, struct taia *pkt_taia); #endif /* TAIA_H */ v class='content'>
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-12-10 09:23:19 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2016-12-10 09:23:19 -0800
commitcd6628953e4216b65e7d91ab70ff8e5b65c9fde9 (patch)
tree2edd235752b9a668649f8a071159340128495e30 /sound/oss/ad1848.h
parent810ac7b7558d7830e72d8dbf34b851fce39e08b0 (diff)
parentd33695fbfab73a4a6550fa5c2d0bacc68d7c5901 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes from David Miller: 1) Limit the number of can filters to avoid > MAX_ORDER allocations. Fix from Marc Kleine-Budde. 2) Limit GSO max size in netvsc driver to avoid problems with NVGRE configurations. From Stephen Hemminger. 3) Return proper error when memory allocation fails in ser_gigaset_init(), from Dan Carpenter. 4) Missing linkage undo in error paths of ipvlan_link_new(), from Gao Feng. 5) Missing necessayr SET_NETDEV_DEV in lantiq and cpmac drivers, from Florian Fainelli. 6) Handle probe deferral properly in smsc911x driver. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: net: mlx5: Fix Kconfig help text net: smsc911x: back out silently on probe deferrals ibmveth: set correct gso_size and gso_type net: ethernet: cpmac: Call SET_NETDEV_DEV() net: ethernet: lantiq_etop: Call SET_NETDEV_DEV() vhost-vsock: fix orphan connection reset cxgb4/cxgb4vf: Assign netdev->dev_port with port ID driver: ipvlan: Unlink the upper dev when ipvlan_link_new failed ser_gigaset: return -ENOMEM on error instead of success NET: usb: cdc_mbim: add quirk for supporting Telit LE922A can: peak: fix bad memory access and free sequence phy: Don't increment MDIO bus refcount unless it's a different owner netvsc: reduce maximum GSO size drivers: net: cpsw-phy-sel: Clear RGMII_IDMODE on "rgmii" links can: raw: raw_setsockopt: limit number of can_filter that can be set
Diffstat (limited to 'sound/oss/ad1848.h')