Changes in uspace/lib/c/include/cap.h [120d5bc:9d58539] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/include/cap.h
r120d5bc r9d58539 1 1 /* 2 * Copyright (c) 20 15 Jiri Svoboda2 * Copyright (c) 2006 Jakub Jermar 3 3 * All rights reserved. 4 4 * … … 30 30 * @{ 31 31 */ 32 /** 33 * @file Storage capacity specification. 32 /** @file 34 33 */ 35 34 36 #ifndef LIB C_CAP_H_37 #define LIB C_CAP_H_35 #ifndef LIB_CAP_H_ 36 #define LIB_CAP_H_ 38 37 39 #include <adt/list.h> 40 #include <loc.h> 41 #include <stdint.h> 42 #include <types/label.h> 43 #include <types/vol.h> 44 #include <vbd.h> 38 #include <task.h> 45 39 46 /** Capacity unit */ 47 typedef enum { 48 cu_byte = 0, 49 cu_kbyte, 50 cu_mbyte, 51 cu_gbyte, 52 cu_tbyte, 53 cu_pbyte, 54 cu_ebyte, 55 cu_zbyte, 56 cu_ybyte 57 } cap_unit_t; 58 59 /** Which of values within the precision of the capacity */ 60 typedef enum { 61 /** The nominal (middling) value */ 62 cv_nom, 63 /** The minimum value */ 64 cv_min, 65 /** The maximum value */ 66 cv_max 67 } cap_vsel_t; 68 69 #define CU_LIMIT (cu_ybyte + 1) 70 71 /** Storage capacity. 72 * 73 * Storage capacity represents both value and precision. 74 * It is a decimal floating point value combined with a decimal 75 * capacity unit. There is an integer mantisa @c m which in combination 76 * with the number of decimal positions @c dp gives a decimal floating-point 77 * number. E.g. for m = 1025 and dp = 2 the number is 10.25. If the unit 78 * cunit = cu_kbyte, the capacity is 10.25 kByte, i.e. 10 250 bytes. 79 * 80 * Note that 1.000 kByte is equivalent to 1000 Byte, but 1 kByte is less 81 * precise. 82 */ 83 typedef struct { 84 /** Mantisa */ 85 uint64_t m; 86 /** Decimal positions */ 87 unsigned dp; 88 /** Capacity unit */ 89 cap_unit_t cunit; 90 } cap_spec_t; 91 92 extern int cap_format(cap_spec_t *, char **); 93 extern int cap_parse(const char *, cap_spec_t *); 94 extern void cap_simplify(cap_spec_t *); 95 extern void cap_from_blocks(uint64_t, size_t, cap_spec_t *); 96 extern int cap_to_blocks(cap_spec_t *, cap_vsel_t, size_t, uint64_t *); 40 extern int cap_grant(task_id_t id, unsigned int caps); 41 extern int cap_revoke(task_id_t id, unsigned int caps); 97 42 98 43 #endif
Note:
See TracChangeset
for help on using the changeset viewer.