Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/include/cap.h

    r120d5bc r9d58539  
    11/*
    2  * Copyright (c) 2015 Jiri Svoboda
     2 * Copyright (c) 2006 Jakub Jermar
    33 * All rights reserved.
    44 *
     
    3030 * @{
    3131 */
    32 /**
    33  * @file Storage capacity specification.
     32/** @file
    3433 */
    3534
    36 #ifndef LIBC_CAP_H_
    37 #define LIBC_CAP_H_
     35#ifndef LIB_CAP_H_
     36#define LIB_CAP_H_
    3837
    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>
    4539
    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 *);
     40extern int cap_grant(task_id_t id, unsigned int caps);
     41extern int cap_revoke(task_id_t id, unsigned int caps);
    9742
    9843#endif
Note: See TracChangeset for help on using the changeset viewer.