Changeset dc76f4a in mainline for uspace/lib/mbr/libmbr.h


Ignore:
Timestamp:
2013-07-29T00:48:51Z (11 years ago)
Author:
Dominik Taborsky (AT DOT) <brembyseznamcz>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
675de6d
Parents:
c3cbbb2
Message:

libmbr, libgpt polishing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/mbr/libmbr.h

    rc3cbbb2 rdc76f4a  
    3838
    3939#include <sys/types.h>
     40#include "mbr.h"
    4041
    4142#define LIBMBR_NAME     "libmbr"
    42 
    43 #ifdef DEBUG_CONFIG
    44 #include <stdio.h>
    45 #include <str_error.h>
    46 #define DEBUG_PRINT_0(str) \
    47         printf("%s:%d: " str, __FILE__, __LINE__)
    48 #define DEBUG_PRINT_1(str, arg1) \
    49         printf("%s:%d: " str, __FILE__, __LINE__, arg1)
    50 #define DEBUG_PRINT_2(str, arg1, arg2) \
    51         printf("%s:%d: " str, __FILE__, __LINE__, arg1, arg2)
    52 #define DEBUG_PRINT_3(str, arg1, arg2, arg3) \
    53         printf("%s:%d: " str, __FILE__, __LINE__, arg1, arg2, arg3)
    54 #else
    55 #define DEBUG_PRINT_0(str)
    56 #define DEBUG_PRINT_1(str, arg1)
    57 #define DEBUG_PRINT_2(str, arg1, arg2)
    58 #define DEBUG_PRINT_3(str, arg1, arg2, arg3)
    59 #endif
    60 
    61 /** Number of primary partition records */
    62 #define N_PRIMARY               4
    63 
    64 /** Boot record signature */
    65 #define BR_SIGNATURE    0xAA55
    66 
    67 enum {
    68         /** Non-bootable */
    69         B_INACTIVE = 0x00,
    70         /** Bootable */
    71         B_ACTIVE = 0x80,
    72         /** Anything else means invalid */
    73 };
    7443
    7544typedef enum {
     
    8049        ST_LOGIC = 8
    8150} MBR_FLAGS;
    82 
    83 enum {
    84         /** Unused partition entry */
    85         PT_UNUSED       = 0x00,
    86         /** Extended partition */
    87         PT_EXTENDED     = 0x05,
    88         /** Extended partition with LBA */
    89         PT_EXTENDED_LBA = 0x0F,
    90         /** GPT Protective partition */
    91         PT_GPT  = 0xEE,
    92 };
    9351
    9452typedef enum {
     
    11270        ERR_LIBBLOCK,
    11371} mbr_err_val;
    114 
    115 
    116 /** Structure of a partition table entry */
    117 typedef struct {
    118         uint8_t status;
    119         /** CHS of fist block in partition */
    120         uint8_t first_chs[3];
    121         /** Partition type */
    122         uint8_t ptype;
    123         /** CHS of last block in partition */
    124         uint8_t last_chs[3];
    125         /** LBA of first block in partition */
    126         uint32_t first_lba;
    127         /** Number of blocks in partition */
    128         uint32_t length;
    129 } __attribute__((packed)) pt_entry_t;
    130 
    131 /** Structure of a boot-record block */
    132 typedef struct {
    133         /** Area for boot code */
    134         uint8_t code_area[440];
    135         /** Optional media ID */
    136         uint32_t media_id;
    137         /** Padding */
    138         uint16_t pad0;
    139         /** Partition table entries */
    140         pt_entry_t pte[N_PRIMARY];
    141         /** Boot record block signature (@c BR_SIGNATURE) */
    142         uint16_t signature;
    143 } __attribute__((packed)) br_block_t;
    14472
    14573/** MBR header */
Note: See TracChangeset for help on using the changeset viewer.