git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix: (blkio) enforce disk io buffer size alignment (to block size)
[lunaix-os.git]
/
lunaix-os
/
includes
/
lunaix
/
block.h
diff --git
a/lunaix-os/includes/lunaix/block.h
b/lunaix-os/includes/lunaix/block.h
index df481d82c32bb245986ee80bba0fe4081b8c5c99..551bc22818a64531fad899c05bfc2243ad82a261 100644
(file)
--- a/
lunaix-os/includes/lunaix/block.h
+++ b/
lunaix-os/includes/lunaix/block.h
@@
-2,52
+2,60
@@
#define __LUNAIX_BLOCK_H
#include <hal/ahci/hba.h>
#define __LUNAIX_BLOCK_H
#include <hal/ahci/hba.h>
+#include <lunaix/blkio.h>
#include <lunaix/device.h>
#define LPT_SIG 0x414e554c
#define PARTITION_NAME_SIZE 48
#define DEV_ID_SIZE 32
#include <lunaix/device.h>
#define LPT_SIG 0x414e554c
#define PARTITION_NAME_SIZE 48
#define DEV_ID_SIZE 32
-typedef uint64_t partition_t;
-typedef uint32_t bdev_t;
-
struct block_dev
{
struct block_dev
{
+ struct llist_header parts;
+ struct blkio_context* blkio;
+ struct device* dev;
char bdev_id[DEV_ID_SIZE];
char name[PARTITION_NAME_SIZE];
char bdev_id[DEV_ID_SIZE];
char name[PARTITION_NAME_SIZE];
-
struct hba_device* hd_dev
;
-
struct device* dev
;
- u
int64_t base
_lba;
- u
int64_t end_lba
;
+
void* driver
;
+
u64_t start_lba
;
+ u
64_t end
_lba;
+ u
32_t blk_size
;
};
};
-struct lpt_entry
-{
- char part_name[PARTITION_NAME_SIZE];
- uint64_t base_lba;
- uint64_t end_lba;
-} __attribute__((packed));
-
// Lunaix Partition Table
struct lpt_header
{
// Lunaix Partition Table
struct lpt_header
{
- u
int
32_t signature;
- u
int
32_t crc;
- u
int
32_t pt_start_lba;
- u
int
32_t pt_end_lba;
- u
int
32_t table_len;
+ u32_t signature;
+ u32_t crc;
+ u32_t pt_start_lba;
+ u32_t pt_end_lba;
+ u32_t table_len;
} __attribute__((packed));
} __attribute__((packed));
+typedef u64_t partition_t;
+typedef uint32_t bdev_t;
+typedef void (*devfs_exporter)(struct block_dev* bdev, void* fsnode);
+
void
block_init();
void
block_init();
+struct block_dev*
+block_alloc_dev(const char* blk_id, void* driver, req_handler ioreq_handler);
+
int
int
-block_mount
_disk(struct hba_device* hd_dev
);
+block_mount
(struct block_dev* bdev, devfs_exporter export
);
void
blk_mapping_init();
void
void
blk_mapping_init();
void
-blk_set_blkmapping(struct block_dev* bdev);
+blk_set_blkmapping(struct block_dev* bdev, void* fsnode);
+
+struct block_dev*
+blk_mount_part(struct block_dev* bdev,
+ const char* name,
+ size_t index,
+ u64_t start_lba,
+ u64_t end_lba);
#endif /* __LUNAIX_BLOCK_H */
#endif /* __LUNAIX_BLOCK_H */