VirtualBox

Changeset 19508 in vbox


Ignore:
Timestamp:
May 7, 2009 9:54:31 PM (16 years ago)
Author:
vboxsync
Message:

iprt/system.h: api draft for querying memory installed and available to us.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/system.h

    r11352 r19508  
    7474RTDECL(int) RTSystemQueryOSInfo(RTSYSOSINFO enmInfo, char *pszInfo, size_t cchInfo);
    7575
     76/**
     77 * Queries the total amount of RAM accessible to the system.
     78 *
     79 * This figure should not include memory that is installed but not used,
     80 * nor memory that will be slow to bring online. The definition of 'slow'
     81 * here is slower than swapping out a MB of pages to disk.
     82 *
     83 * @returns IPRT status code.
     84 * @retval  VINF_SUCCESS and *pcb on sucess.
     85 * @retval  VERR_ACCESS_DENIED if the information isn't accessible to the
     86 *          caller.
     87 *
     88 * @param   pcb             Where to store the result (in bytes).
     89 */
     90RTDECL(int) RTSystemQueryTotalRam(uint64_t *pcb);
     91
     92/**
     93 * Queries the amount of RAM that is currently locked down or in some other
     94 * way made impossible to virtualize within reasonably short time.
     95 *
     96 * The purposes of this API is, when combined with RTSystemQueryTotalRam, to
     97 * be able to determin an absolute max limit for how much fixed memory it is
     98 * (theoretically) possible to allocate (or lock down).
     99 *
     100 * The kind memory covered by this function includes:
     101 *      - locked (wired) memory - like for instance RTR0MemObjLockUser
     102 *        and RTR0MemObjLockKernel makes,
     103 *      - kernel pools and heaps - like for instance the ring-0 variant
     104 *        of RTMemAlloc taps into,
     105 *      - fixed (not pagable) kernel allocations - like for instance
     106 *        all the RTR0MemObjAlloc* functions makes,
     107 *      - any similar memory that isn't easily swapped out, discarded,
     108 *        or flushed to disk.
     109 *
     110 * This works against the value returned by RTSystemQueryTotalRam, and
     111 * the value reported by this function can never be larger than what a
     112 * call to RTSystemQueryTotalRam returns.
     113 *
     114 * The short time term here is relative to swapping to disk like in
     115 * RTSystemQueryTotalRam. This could mean that (part of) the dirty buffers
     116 * in the dynamic I/O cache could be included in the total. If the dynamic
     117 * I/O cache isn't likely to either flush buffers when the load increases
     118 * and put them back into normal circulation, they should be included in
     119 * the memory accounted for here.
     120 *
     121 * @retval  VINF_SUCCESS and *pcb on sucess.
     122 * @retval  VERR_NOT_SUPPORTED if the information isn't available on the
     123 *          system in general. The caller must handle this scenario.
     124 * @retval  VERR_ACCESS_DENIED if the information isn't accessible to the
     125 *          caller.
     126 *
     127 * @param   pcb             Where to store the result (in bytes).
     128 *
     129 * @remarks This function could've been inverted and called
     130 *          RTSystemQueryAvailableRam, but that might give impression that
     131 *          it would be possible to allocate the amount of memory it
     132 *          indicates for a single purpose, something which would be very
     133 *          improbable on most systems.
     134 *
     135 * @remarks We might have to add another output parameter to this function
     136 *          that indicates if some of the memory kinds listed above cannot
     137 *          be accounted for on the system and therefore is not include in
     138 *          the returned amount.
     139 */
     140RTDECL(int) RTSystemQueryUnavailableRam(uint64_t *pcb);
     141
    76142
    77143/** @} */
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette