当前位置: 首页>>代码示例>>C++>>正文


C++ SharedPtr::GetLinearHeapBase方法代码示例

本文整理汇总了C++中kernel::SharedPtr::GetLinearHeapBase方法的典型用法代码示例。如果您正苦于以下问题:C++ SharedPtr::GetLinearHeapBase方法的具体用法?C++ SharedPtr::GetLinearHeapBase怎么用?C++ SharedPtr::GetLinearHeapBase使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在kernel::SharedPtr的用法示例。


在下文中一共展示了SharedPtr::GetLinearHeapBase方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: GetProcessInfo

static ResultCode GetProcessInfo(s64* out, Handle process_handle, u32 type) {
    LOG_TRACE(Kernel_SVC, "called process=0x%08X type=%u", process_handle, type);

    using Kernel::Process;
    Kernel::SharedPtr<Process> process = Kernel::g_handle_table.Get<Process>(process_handle);
    if (process == nullptr)
        return ERR_INVALID_HANDLE;

    switch (type) {
    case 0:
    case 2:
        // TODO(yuriks): Type 0 returns a slightly higher number than type 2, but I'm not sure
        // what's the difference between them.
        *out = process->heap_used + process->linear_heap_used + process->misc_memory_used;
        if(*out % Memory::PAGE_SIZE != 0) {
            LOG_ERROR(Kernel_SVC, "called, memory size not page-aligned");
            return ERR_MISALIGNED_SIZE;
        }
        break;
    case 1:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
        // These are valid, but not implemented yet
        LOG_ERROR(Kernel_SVC, "unimplemented GetProcessInfo type=%u", type);
        break;
    case 20:
        *out = Memory::FCRAM_PADDR - process->GetLinearHeapBase();
        break;
    default:
        LOG_ERROR(Kernel_SVC, "unknown GetProcessInfo type=%u", type);

        if (type >= 21 && type <= 23) {
            return ResultCode( // 0xE0E01BF4
                    ErrorDescription::NotImplemented, ErrorModule::OS,
                    ErrorSummary::InvalidArgument, ErrorLevel::Usage);
        } else {
            return ResultCode( // 0xD8E007ED
                    ErrorDescription::InvalidEnumValue, ErrorModule::Kernel,
                    ErrorSummary::InvalidArgument, ErrorLevel::Permanent);
        }
        break;
    }

    return RESULT_SUCCESS;
}
开发者ID:14923523,项目名称:citra,代码行数:49,代码来源:svc.cpp


注:本文中的kernel::SharedPtr::GetLinearHeapBase方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。