Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 9 Jul 2022 18:26:37 +0200
From:      Marc Veldman <marc@bumblingdork.com>
To:        freebsd-hackers@freebsd.org
Subject:   Canonical way / best practice for 128-bit integers
Message-ID:  <86CB4C22-9CAB-4578-8F11-962B4B08F756@bumblingdork.com>

next in thread | raw e-mail | index | archive | help
Hello,

I=E2=80=99m working on some bluetooth code, and that involves handling =
128-bit uuids.
There are various ways to handle in the FreeBSD codebase, like in sdp.h:

/*
 * SDP int128/uint128 parameter
 */
   =20
struct int128 {
        int8_t  b[16];
};
typedef struct int128   int128_t;
typedef struct int128   uint128_t;

and in sys/dev/random/uint128.h

#ifdef USE_REAL_UINT128_T
typedef __uint128_t uint128_t;
#define UINT128_ZERO 0ULL
#else
typedef struct {
        /* Ignore endianness */
        uint64_t u128t_word0;
        uint64_t u128t_word1;
} uint128_t;
static const uint128_t very_long_zero =3D {0UL,0UL};
#define UINT128_ZERO very_long_zero
#endif

Is there any recommended / standard way to handle 128 bit integers in a =
portable way?

Best regards,

Marc Veldman=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?86CB4C22-9CAB-4578-8F11-962B4B08F756>