feat: better rtc framework which aims to remove single rtc restrictions.
[lunaix-os.git] / lunaix-os / kernel / block / blkpart_gpt.c
index 85c87e7e51e5a973d99fb08d60587e0c6f2eac12..3eee27727008917155ab72366fa70dd1e1ac2115 100644 (file)
@@ -31,7 +31,7 @@ blkpart_parse(struct device* master, struct gpt_header* header)
 
     for (size_t i = 0; i < header->ents_len; i++) {
         if (!(i % ENT_PER_BLK)) {
-            errno = master->read(
+            errno = master->ops.read(
               master, ents_parial, LBA2OFF(ent_lba++), GPT_BLKSIZE);
             if (errno < 0) {
                 goto done;
@@ -46,7 +46,8 @@ blkpart_parse(struct device* master, struct gpt_header* header)
         }
 
         // Convert UEFI's 512B LB representation into local LBA range.
-        u64_t slba_local = (ent->start_lba * GPT_BLKSIZE) / bdev->blk_size;
+        u64_t slba_local =
+          (ent->start_lba * GPT_BLKSIZE) / (u64_t)bdev->blk_size;
         u64_t elba_local = (ent->end_lba * GPT_BLKSIZE) / (u64_t)bdev->blk_size;
 
         kprintf("%s: guid part#%d: %d..%d\n",
@@ -69,7 +70,8 @@ blkpart_probegpt(struct device* master)
     int errno;
     struct gpt_header* gpt_hdr = (struct gpt_header*)valloc(GPT_BLKSIZE);
 
-    if ((errno = master->read(master, gpt_hdr, LBA2OFF(1), LBA2OFF(1))) < 0) {
+    if ((errno = master->ops.read(master, gpt_hdr, LBA2OFF(1), LBA2OFF(1))) <
+        0) {
         goto done;
     }