From 9f0b7bd6b0a1389e5bcff74952551ab49f21b462 Mon Sep 17 00:00:00 2001 From: Michael Kerrisk Date: Thu, 21 Apr 2016 13:07:01 +0200 Subject: [PATCH] bswap.3: New page documenting bswap_16(), bswap_32(), and bswap_64() Signed-off-by: Michael Kerrisk --- man3/bswap.3 | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 man3/bswap.3 diff --git a/man3/bswap.3 b/man3/bswap.3 new file mode 100644 index 000000000..f01b28fa5 --- /dev/null +++ b/man3/bswap.3 @@ -0,0 +1,83 @@ +.\" Copyright (C) 2016 Michael Kerrisk +.\" +.\" %%%LICENSE_START(VERBATIM) +.\" Permission is granted to make and distribute verbatim copies of this +.\" manual provided the copyright notice and this permission notice are +.\" preserved on all copies. +.\" +.\" Permission is granted to copy and distribute modified versions of this +.\" manual under the conditions for verbatim copying, provided that the +.\" entire resulting derived work is distributed under the terms of a +.\" permission notice identical to this one. +.\" +.\" Since the Linux kernel and libraries are constantly changing, this +.\" manual page may be incorrect or out-of-date. The author(s) assume no +.\" responsibility for errors or omissions, or for damages resulting from +.\" the use of the information contained herein. The author(s) may not +.\" have taken the same level of care in the production of this manual, +.\" which is licensed free of charge, as they might when working +.\" professionally. +.\" +.\" Formatted or processed versions of this manual, if unaccompanied by +.\" the source, must acknowledge the copyright and authors of this work. +.\" %%%LICENSE_END +.\" +.TH BSWAP 3 2016-04-21 "Linux" "Linux Programmer's Manual" +.SH NAME +bswap_16, bswap_32, bswap_64 \- reverse order of bytes +.SH SYNOPSIS +.nf +.B #include + +.BI bswap_16( x ); +.BI bswap_32( x ); +.BI bswap_64( x ); +.fi +.SH DESCRIPTION +These macros return a value in which the order of the bytes +in their 2-, 4-, or 8-byte arguments is reversed. +.SH RETURN VALUE +These macros return the value of their argument with the bytes reversed. +.SH ERRORS +These macros always succeed. +.SH CONFORMING TO +These macros are GNU extensions. +.SH EXAMPLE +The program below swaps the bytes of the 8-byte integer supplied as +its command-line argument. +The following shell session demonstrates the use of the program: + +.nf +.in +4n +$ \fB./a.out 0x0123456789abcdef\fP +0x123456789abcdef ==> 0xefcdab8967452301 +.in +.fi +.SS Program source +\& +.nf +#include +#include +#include +#include +#include + +int +main(int argc, char *argv[]) +{ + uint64_t x; + + if (argc != 2) { + fprintf(stderr, "Usage: %s \\n", argv[0]); + exit(EXIT_FAILURE); + } + + x = strtoul(argv[1], NULL, 0); + printf("0x%" PRIx64 " ==> 0x%" PRIx64 "\\n", x, bswap_64(x)); + + exit(EXIT_SUCCESS); +} +.fi +.SH SEE ALSO +.BR byteorder (3), +.BR endian (3)