Sigrid Solveig Haflínudóttirupdate plan 9 portb2206756 years agoHistory
160 lines · 4.8 KB · C
RawDownload
/* * Copyright (c) 2015 Grzegorz Kostka (kostka.grzegorz@gmail.com) * Copyright (c) 2015 Kaho Ng (ngkaho1234@gmail.com) * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above copyright *   notice, this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright *   notice, this list of conditions and the following disclaimer in the *   documentation and/or other materials provided with the distribution. * - The name of the author may not be used to endorse or promote products *   derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /** @addtogroup lwext4 * @{ *//** * @file  ext4_misc.h * @brief Miscellaneous helpers. */ #ifndef EXT4_MISC_H_#define EXT4_MISC_H_ #ifdef __cplusplusextern "C" {#endif #include <stdint.h> /**************************************************************/ #define EXT4_DIV_ROUND_UP(x, y) (((x) + (y) - 1)/(y))#define EXT4_ALIGN(x, y) ((y) * EXT4_DIV_ROUND_UP((x), (y))) /****************************Endian conversion*****************/ static inline uint64_t reorder64(uint64_t n){	return  ((n & 0xff) << 56) |		((n & 0xff00) << 40) |		((n & 0xff0000) << 24) |		((n & 0xff000000LL) << 8) |		((n & 0xff00000000LL) >> 8) |		((n & 0xff0000000000LL) >> 24) |		((n & 0xff000000000000LL) >> 40) |		((n & 0xff00000000000000LL) >> 56);} static inline uint32_t reorder32(uint32_t n){	return  ((n & 0xff) << 24) |		((n & 0xff00) << 8) |		((n & 0xff0000) >> 8) |		((n & 0xff000000) >> 24);} static inline uint16_t reorder16(uint16_t n){	return  ((n & 0xff) << 8) |		((n & 0xff00) >> 8);} #ifdef CONFIG_BIG_ENDIAN#define to_le64(_n) reorder64(_n)#define to_le32(_n) reorder32(_n)#define to_le16(_n) reorder16(_n) #define to_be64(_n) _n#define to_be32(_n) _n#define to_be16(_n) _n #else#define to_le64(_n) _n#define to_le32(_n) _n#define to_le16(_n) _n #define to_be64(_n) reorder64(_n)#define to_be32(_n) reorder32(_n)#define to_be16(_n) reorder16(_n)#endif /****************************Access macros to ext4 structures*****************/ #define ext4_get32(s, f) to_le32((s)->f)#define ext4_get16(s, f) to_le16((s)->f)#define ext4_get8(s, f) (s)->f #define ext4_set32(s, f, v)                                                    \	do {                                                                   \		(s)->f = to_le32(v);                                           \	} while (0)#define ext4_set16(s, f, v)                                                    \	do {                                                                   \		(s)->f = to_le16(v);                                           \	} while (0)#define ext4_set8                                                              \	(s, f, v) do { (s)->f = (v); }                                         \	while (0) /****************************Access macros to jbd2 structures*****************/ #define jbd_get32(s, f) to_be32((s)->f)#define jbd_get16(s, f) to_be16((s)->f)#define jbd_get8(s, f) (s)->f #define jbd_set32(s, f, v)                                                    \	do {                                                                   \		(s)->f = to_be32(v);                                           \	} while (0)#define jbd_set16(s, f, v)                                                    \	do {                                                                   \		(s)->f = to_be16(v);                                           \	} while (0)#define jbd_set8                                                              \	(s, f, v) do { (s)->f = (v); }                                         \	while (0) #ifdef __GNUC__ #ifndef __unused #define __unused __attribute__ ((__unused__)) #endif#else #define __unused#endif #ifndef offsetof#define offsetof(type, field) 		\	((size_t)(&(((type *)0)->field)))#endif #ifndef USED#define USED(x) (void)(x)#endif #ifdef __cplusplus}#endif #endif /* EXT4_MISC_H_ */ /** * @} */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t