source: rtems/cpukit/libfs/src/rfs/rtems-rfs-data.h @ 3c96bee

4.115
Last change on this file since 3c96bee was a15eaaf, checked in by Joel Sherrill <joel.sherrill@…>, on 01/10/13 at 19:20:34

cpukit: Doxygen group fixes and many warnings addressed

The output of the modules.html is much improved. Most
filesystem and POSIX API related groups are properly nested.
Some formatting issues were addressed as were multiple
inconsistencies.

  • Property mode set to 100644
File size: 2.1 KB
Line 
1/**
2 * @file
3 *
4 * @brief RTEMS File System Data
5 *
6 * @ingroup rtems_rfs
7 *
8 * RTEMS File System Data.
9 *
10 * Access data in the correct byte order for the specific target we are running
11 * on.
12 *
13 * @todo Make direct access on matching byte ordered targets.
14 */
15
16/*
17 *  COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
18 *
19 *  The license and distribution terms for this file may be
20 *  found in the file LICENSE in this distribution or at
21 *  http://www.rtems.com/license/LICENSE.
22 */
23
24
25#if !defined (_RTEMS_RFS_DATA_H_)
26#define _RTEMS_RFS_DATA_H_
27
28#include <stdint.h>
29
30/**
31 * Helper function to make sure we have a byte pointer.
32 */
33#define rtems_rfs_data_ptr(_d) ((uint8_t*)(_d))
34
35/**
36 * Helper function to get the data shifted in the correctly sized type.
37 */
38#define rtems_rfs_data_get(_d, _t, _o, _s) \
39  (((_t)(rtems_rfs_data_ptr (_d)[_o])) << (_s))
40
41/**
42 * RFS Read Unsigned 8bit Integer
43 */
44#define rtems_rfs_read_u8(_d) \
45  (*rtems_rfs_data_ptr (_d))
46
47/**
48 * RFS Read Unsigned 16bit Integer
49 */
50#define rtems_rfs_read_u16(_d) \
51  (rtems_rfs_data_get (_d, uint16_t, 0, 8) | \
52   rtems_rfs_data_get (_d, uint16_t, 1, 0))
53
54/**
55 * RFS Read Unsigned 32bit Integer
56 */
57#define rtems_rfs_read_u32(_d) \
58  (rtems_rfs_data_get (_d, uint32_t, 0, 24) | \
59   rtems_rfs_data_get (_d, uint32_t, 1, 16) | \
60   rtems_rfs_data_get (_d, uint32_t, 2, 8) | \
61   rtems_rfs_data_get (_d, uint32_t, 3, 0))
62
63/**
64 * RFS Write Unsigned 8bit Integer
65 */
66#define rtems_rfs_write_u8(_d, _v) \
67  (*rtems_rfs_data_ptr (_d) = (uint8_t)(_v))
68
69/**
70 * RFS Write Unsigned 16bit Integer
71 */
72#define rtems_rfs_write_u16(_d, _v) \
73  do { \
74    rtems_rfs_data_ptr (_d)[0] = (uint8_t)(((uint16_t)(_v)) >> 8); \
75    rtems_rfs_data_ptr (_d)[1] = (uint8_t)((_v)); \
76  } while (0)
77
78/**
79 * RFS Write Unsigned 32bit Integer
80 */
81#define rtems_rfs_write_u32(_d, _v) \
82  do { \
83    rtems_rfs_data_ptr (_d)[0] = (uint8_t)(((uint32_t)(_v)) >> 24); \
84    rtems_rfs_data_ptr (_d)[1] = (uint8_t)(((uint32_t)(_v)) >> 16); \
85    rtems_rfs_data_ptr (_d)[2] = (uint8_t)(((uint32_t)(_v)) >> 8);  \
86    rtems_rfs_data_ptr (_d)[3] = (uint8_t)((uint32_t)(_v)); \
87  } while (0)
88
89#endif
Note: See TracBrowser for help on using the repository browser.