Files | |
file | partition.c |
file | partition.h |
file | partition_config.h |
Modules | |
Configuration of partition table support | |
Data Structures | |
struct | partition_struct |
Defines | |
#define | PARTITION_TYPE_FREE 0x00 |
#define | PARTITION_TYPE_FAT12 0x01 |
#define | PARTITION_TYPE_FAT16_32MB 0x04 |
#define | PARTITION_TYPE_EXTENDED 0x05 |
#define | PARTITION_TYPE_FAT16 0x06 |
#define | PARTITION_TYPE_FAT32 0x0b |
#define | PARTITION_TYPE_FAT32_LBA 0x0c |
#define | PARTITION_TYPE_FAT16_LBA 0x0e |
#define | PARTITION_TYPE_EXTENDED_LBA 0x0f |
#define | PARTITION_TYPE_UNKNOWN 0xff |
Typedefs | |
typedef uint8_t(* | device_read_t )(uint32_t offset, uint8_t *buffer, uint16_t length) |
typedef uint8_t(* | device_read_callback_t )(uint8_t *buffer, uint32_t offset, void *p) |
typedef uint8_t(* | device_read_interval_t )(uint32_t offset, uint8_t *buffer, uint16_t interval, uint16_t length, device_read_callback_t callback, void *p) |
typedef uint8_t(* | device_write_t )(uint32_t offset, const uint8_t *buffer, uint16_t length) |
typedef uint16_t(* | device_write_callback_t )(uint8_t *buffer, uint32_t offset, void *p) |
typedef uint8_t(* | device_write_interval_t )(uint32_t offset, uint8_t *buffer, uint16_t length, device_write_callback_t callback, void *p) |
Functions | |
struct partition_struct * | partition_open (device_read_t device_read, device_read_interval_t device_read_interval, device_write_t device_write, device_write_interval_t device_write_interval, int8_t index) |
uint8_t | partition_close (struct partition_struct *partition) |
Variables | |
static struct partition_struct | partition_handles [PARTITION_COUNT] |
#define PARTITION_TYPE_EXTENDED 0x05 |
The partition is an extended partition with its own partition table.
Definition at line 50 of file partition.h.
#define PARTITION_TYPE_EXTENDED_LBA 0x0f |
The partition is an extended partition with LBA.
Definition at line 70 of file partition.h.
#define PARTITION_TYPE_FAT12 0x01 |
The partition contains a FAT12 filesystem.
Definition at line 42 of file partition.h.
#define PARTITION_TYPE_FAT16 0x06 |
The partition contains a FAT16 filesystem.
Definition at line 54 of file partition.h.
Referenced by fat16_read_header().
#define PARTITION_TYPE_FAT16_32MB 0x04 |
The partition contains a FAT16 filesystem with 32MB maximum.
Definition at line 46 of file partition.h.
#define PARTITION_TYPE_FAT16_LBA 0x0e |
The partition contains a FAT16 filesystem with LBA.
Definition at line 66 of file partition.h.
#define PARTITION_TYPE_FAT32 0x0b |
The partition contains a FAT32 filesystem.
Definition at line 58 of file partition.h.
#define PARTITION_TYPE_FAT32_LBA 0x0c |
The partition contains a FAT32 filesystem with LBA.
Definition at line 62 of file partition.h.
#define PARTITION_TYPE_FREE 0x00 |
The partition table entry is not used.
Definition at line 38 of file partition.h.
Referenced by partition_close(), and partition_open().
#define PARTITION_TYPE_UNKNOWN 0xff |
The partition has an unknown type.
Definition at line 74 of file partition.h.
typedef uint8_t(* device_read_callback_t)(uint8_t *buffer, uint32_t offset, void *p) |
A function pointer passed to a device_read_interval_t
.
[in] | buffer | The buffer which contains the data just read. |
[in] | offset | The offset from which the data in buffer was read. |
[in] | p | An opaque pointer. |
Definition at line 92 of file partition.h.
typedef uint8_t(* device_read_interval_t)(uint32_t offset, uint8_t *buffer, uint16_t interval, uint16_t length, device_read_callback_t callback, void *p) |
A function pointer used to continuously read units of interval
bytes and call a callback function.
This function starts reading at the specified offset. Every interval
bytes, it calls the callback function with the associated data buffer.
By returning zero, the callback may stop reading.
[in] | offset | Offset from which to start reading. |
[in] | buffer | Pointer to a buffer which is at least interval bytes in size. |
[in] | interval | Number of bytes to read before calling the callback function. |
[in] | length | Number of bytes to read altogether. |
[in] | callback | The function to call every interval bytes. |
[in] | p | An opaque pointer directly passed to the callback function. |
Definition at line 111 of file partition.h.
typedef uint8_t(* device_read_t)(uint32_t offset, uint8_t *buffer, uint16_t length) |
A function pointer used to read from the partition.
[in] | offset | The offset on the device where to start reading. |
[out] | buffer | The buffer into which to place the data. |
[in] | length | The count of bytes to read. |
Definition at line 83 of file partition.h.
typedef uint16_t(* device_write_callback_t)(uint8_t *buffer, uint32_t offset, void *p) |
A function pointer passed to a device_write_interval_t
.
[in] | buffer | The buffer which receives the data to write. |
[in] | offset | The offset to which the data in buffer will be written. |
[in] | p | An opaque pointer. |
buffer
Definition at line 129 of file partition.h.
typedef uint8_t(* device_write_interval_t)(uint32_t offset, uint8_t *buffer, uint16_t length, device_write_callback_t callback, void *p) |
A function pointer used to continuously write a data stream obtained from a callback function.
This function starts writing at the specified offset. To obtain the next bytes to write, it calls the callback function. The callback fills the provided data buffer and returns the number of bytes it has put into the buffer.
By returning zero, the callback may stop writing.
[in] | offset | Offset where to start writing. |
[in] | buffer | Pointer to a buffer which is used for the callback function. |
[in] | length | Number of bytes to write in total. May be zero for endless writes. |
[in] | callback | The function used to obtain the bytes to write. |
[in] | p | An opaque pointer directly passed to the callback function. |
Definition at line 148 of file partition.h.
typedef uint8_t(* device_write_t)(uint32_t offset, const uint8_t *buffer, uint16_t length) |
A function pointer used to write to the partition.
[in] | offset | The offset on the device where to start writing. |
[in] | buffer | The buffer which to write. |
[in] | length | The count of bytes to write. |
Definition at line 119 of file partition.h.
uint8_t partition_close | ( | struct partition_struct * | partition | ) |
Closes a partition.
This function destroys a partition descriptor which was previously obtained from a call to partition_open(). When this function returns, the given descriptor will be invalid.
[in] | partition | The partition descriptor to destroy. |
Definition at line 148 of file partition.c.
References PARTITION_TYPE_FREE, and partition_struct::type.
struct partition_struct * partition_open | ( | device_read_t | device_read, | |
device_read_interval_t | device_read_interval, | |||
device_write_t | device_write, | |||
device_write_interval_t | device_write_interval, | |||
int8_t | index | |||
) | [read] |
Opens a partition.
Opens a partition by its index number and returns a partition handle which describes the opened partition.
[in] | device_read | A function pointer which is used to read from the disk. |
[in] | device_read_interval | A function pointer which is used to read in constant intervals from the disk. |
[in] | device_write | A function pointer which is used to write to the disk. |
[in] | device_write_interval | A function pointer which is used to write a data stream to disk. |
[in] | index | The index of the partition which should be opened, range 0 to 3. A negative value is allowed as well. In this case, the partition opened is not checked for existance, begins at offset zero, has a length of zero and is of an unknown type. |
Definition at line 70 of file partition.c.
References partition_struct::device_read, partition_struct::device_read_interval, partition_struct::device_write, partition_struct::device_write_interval, partition_struct::length, partition_struct::offset, PARTITION_COUNT, partition_handles, PARTITION_TYPE_FREE, and partition_struct::type.
Referenced by main().
struct partition_struct partition_handles[PARTITION_COUNT] [static] |