-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 281152 b: refs/heads/master c: 2d31597 h: refs/heads/master v: v3
- Loading branch information
Mathieu Desnoyers
authored and
Greg Kroah-Hartman
committed
Nov 29, 2011
1 parent
cc7547b
commit 580c88f
Showing
2 changed files
with
62 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: a643061cb861ebb18e0292b7510dd9879b598ae0 | ||
refs/heads/master: 2d31597d37ec8842b9575005190fde2898764628 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
#ifndef _LTTNG_ALIGN_H | ||
#define _LTTNG_ALIGN_H | ||
|
||
/* | ||
* lib/align.h | ||
* | ||
* (C) Copyright 2010-2011 - Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | ||
* | ||
* Dual LGPL v2.1/GPL v2 license. | ||
*/ | ||
|
||
#ifdef __KERNEL__ | ||
|
||
#include <linux/types.h> | ||
#include "bug.h" | ||
|
||
#define ALIGN_FLOOR(x, a) __ALIGN_FLOOR_MASK(x, (typeof(x)) (a) - 1) | ||
#define __ALIGN_FLOOR_MASK(x, mask) ((x) & ~(mask)) | ||
#define PTR_ALIGN_FLOOR(p, a) \ | ||
((typeof(p)) ALIGN_FLOOR((unsigned long) (p), a)) | ||
|
||
/* | ||
* Align pointer on natural object alignment. | ||
*/ | ||
#define object_align(obj) PTR_ALIGN(obj, __alignof__(*(obj))) | ||
#define object_align_floor(obj) PTR_ALIGN_FLOOR(obj, __alignof__(*(obj))) | ||
|
||
/** | ||
* offset_align - Calculate the offset needed to align an object on its natural | ||
* alignment towards higher addresses. | ||
* @align_drift: object offset from an "alignment"-aligned address. | ||
* @alignment: natural object alignment. Must be non-zero, power of 2. | ||
* | ||
* Returns the offset that must be added to align towards higher | ||
* addresses. | ||
*/ | ||
#define offset_align(align_drift, alignment) \ | ||
({ \ | ||
BUILD_RUNTIME_BUG_ON((alignment) == 0 \ | ||
|| ((alignment) & ((alignment) - 1))); \ | ||
(((alignment) - (align_drift)) & ((alignment) - 1)); \ | ||
}) | ||
|
||
/** | ||
* offset_align_floor - Calculate the offset needed to align an object | ||
* on its natural alignment towards lower addresses. | ||
* @align_drift: object offset from an "alignment"-aligned address. | ||
* @alignment: natural object alignment. Must be non-zero, power of 2. | ||
* | ||
* Returns the offset that must be substracted to align towards lower addresses. | ||
*/ | ||
#define offset_align_floor(align_drift, alignment) \ | ||
({ \ | ||
BUILD_RUNTIME_BUG_ON((alignment) == 0 \ | ||
|| ((alignment) & ((alignment) - 1))); \ | ||
(((align_drift) - (alignment)) & ((alignment) - 1); \ | ||
}) | ||
|
||
#endif /* __KERNEL__ */ | ||
|
||
#endif |