Stubbing out some file stuff.
This commit is contained in:
parent
6cda645911
commit
5176a7e7c9
|
@ -52,8 +52,10 @@ XboxkrnlModule::XboxkrnlModule(Runtime* runtime) :
|
|||
|
||||
// Register all exported functions.
|
||||
RegisterDebugExports(resolver, kernel_state_.get());
|
||||
RegisterFileExports(resolver, kernel_state_.get());
|
||||
RegisterHalExports(resolver, kernel_state_.get());
|
||||
RegisterMemoryExports(resolver, kernel_state_.get());
|
||||
RegisterMiscExports(resolver, kernel_state_.get());
|
||||
RegisterModuleExports(resolver, kernel_state_.get());
|
||||
RegisterRtlExports(resolver, kernel_state_.get());
|
||||
RegisterThreadingExports(resolver, kernel_state_.get());
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
'sources': [
|
||||
'xevent.cc',
|
||||
'xevent.h',
|
||||
'xfile.cc',
|
||||
'xfile.h',
|
||||
'xmodule.cc',
|
||||
'xmodule.h',
|
||||
'xthread.cc',
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2013 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include <xenia/kernel/modules/xboxkrnl/objects/xfile.h>
|
||||
|
||||
#include <xenia/kernel/modules/xboxkrnl/objects/xevent.h>
|
||||
#include <xenia/kernel/modules/xboxkrnl/objects/xmodule.h>
|
||||
|
||||
|
||||
using namespace xe;
|
||||
using namespace xe::kernel;
|
||||
using namespace xe::kernel::xboxkrnl;
|
||||
|
||||
|
||||
XFile::XFile(KernelState* kernel_state) :
|
||||
XObject(kernel_state, kTypeFile) {
|
||||
}
|
||||
|
||||
XFile::~XFile() {
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2013 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef XENIA_KERNEL_MODULES_XBOXKRNL_XFILE_H_
|
||||
#define XENIA_KERNEL_MODULES_XBOXKRNL_XFILE_H_
|
||||
|
||||
#include <xenia/kernel/modules/xboxkrnl/xobject.h>
|
||||
|
||||
#include <xenia/kernel/xbox.h>
|
||||
|
||||
|
||||
namespace xe {
|
||||
namespace kernel {
|
||||
namespace xboxkrnl {
|
||||
|
||||
|
||||
class XFile : public XObject {
|
||||
public:
|
||||
XFile(KernelState* kernel_state);
|
||||
virtual ~XFile();
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
|
||||
} // namespace xboxkrnl
|
||||
} // namespace kernel
|
||||
} // namespace xe
|
||||
|
||||
|
||||
#endif // XENIA_KERNEL_MODULES_XBOXKRNL_XFILE_H_
|
|
@ -9,10 +9,14 @@
|
|||
'object_table.h',
|
||||
'xboxkrnl_debug.cc',
|
||||
'xboxkrnl_debug.h',
|
||||
'xboxkrnl_file.cc',
|
||||
'xboxkrnl_file.h',
|
||||
'xboxkrnl_hal.cc',
|
||||
'xboxkrnl_hal.h',
|
||||
'xboxkrnl_memory.cc',
|
||||
'xboxkrnl_memory.h',
|
||||
'xboxkrnl_misc.cc',
|
||||
'xboxkrnl_misc.h',
|
||||
'xboxkrnl_module.cc',
|
||||
'xboxkrnl_module.h',
|
||||
'xboxkrnl_ordinals.h',
|
||||
|
|
|
@ -0,0 +1,114 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2013 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include <xenia/kernel/modules/xboxkrnl/xboxkrnl_file.h>
|
||||
|
||||
#include <xenia/kernel/shim_utils.h>
|
||||
#include <xenia/kernel/modules/xboxkrnl/kernel_state.h>
|
||||
#include <xenia/kernel/modules/xboxkrnl/xboxkrnl_private.h>
|
||||
#include <xenia/kernel/modules/xboxkrnl/objects/xthread.h>
|
||||
|
||||
|
||||
using namespace xe;
|
||||
using namespace xe::kernel;
|
||||
using namespace xe::kernel::xboxkrnl;
|
||||
|
||||
|
||||
namespace xe {
|
||||
namespace kernel {
|
||||
namespace xboxkrnl {
|
||||
|
||||
|
||||
X_STATUS xeNtCreateFile(
|
||||
uint32_t* handle_ptr, uint32_t desired_access, void* object_attributes_ptr,
|
||||
void* io_status_block_ptr, uint64_t allocation_size, uint32_t file_attributes,
|
||||
uint32_t share_access, uint32_t creation_disposition) {
|
||||
KernelState* state = shared_kernel_state_;
|
||||
XEASSERTNOTNULL(state);
|
||||
return X_STATUS_NO_SUCH_FILE;
|
||||
}
|
||||
|
||||
SHIM_CALL NtCreateFile_shim(
|
||||
xe_ppc_state_t* ppc_state, KernelState* state) {
|
||||
uint32_t handle_ptr = SHIM_GET_ARG_32(0);
|
||||
uint32_t desired_access = SHIM_GET_ARG_32(1);
|
||||
uint32_t object_attributes_ptr = SHIM_GET_ARG_32(2);
|
||||
uint32_t io_status_block_ptr = SHIM_GET_ARG_32(3);
|
||||
uint32_t allocation_size_ptr = SHIM_GET_ARG_32(4);
|
||||
uint32_t file_attributes = SHIM_GET_ARG_32(5);
|
||||
uint32_t share_access = SHIM_GET_ARG_32(6);
|
||||
uint32_t creation_disposition = SHIM_GET_ARG_32(7);
|
||||
|
||||
XELOGD(
|
||||
"NtCreateFile(%.8X, %d, %.8X, %.8X, %.8X, %.8X, %.8X, %.8X)",
|
||||
handle_ptr,
|
||||
desired_access,
|
||||
object_attributes_ptr,
|
||||
io_status_block_ptr,
|
||||
allocation_size_ptr,
|
||||
file_attributes,
|
||||
share_access,
|
||||
creation_disposition);
|
||||
|
||||
// object_attributes is:
|
||||
// void *root_directory
|
||||
// _STRING *object_name <- probably initialized by previous RtlInitAnsiString call
|
||||
// uint32_t attributes
|
||||
|
||||
uint64_t allocation_size = 0; // is this correct???
|
||||
if (allocation_size_ptr != 0) {
|
||||
allocation_size = SHIM_MEM_64(allocation_size_ptr);
|
||||
}
|
||||
|
||||
uint32_t handle;
|
||||
X_STATUS result = xeNtCreateFile(
|
||||
&handle, desired_access, SHIM_MEM_ADDR(object_attributes_ptr), SHIM_MEM_ADDR(io_status_block_ptr),
|
||||
allocation_size, file_attributes, share_access, creation_disposition);
|
||||
|
||||
if (XSUCCEEDED(result)) {
|
||||
if (handle_ptr) {
|
||||
SHIM_SET_MEM_32(handle_ptr, handle);
|
||||
}
|
||||
}
|
||||
SHIM_SET_RETURN(result);
|
||||
}
|
||||
|
||||
SHIM_CALL NtQueryInformationFile_shim(
|
||||
xe_ppc_state_t* ppc_state, KernelState* state) {
|
||||
SHIM_SET_RETURN(X_STATUS_NO_SUCH_FILE);
|
||||
}
|
||||
|
||||
SHIM_CALL NtReadFile_shim(
|
||||
xe_ppc_state_t* ppc_state, KernelState* state) {
|
||||
SHIM_SET_RETURN(X_STATUS_NO_SUCH_FILE);
|
||||
}
|
||||
|
||||
SHIM_CALL NtQueryFullAttributesFile_shim(
|
||||
xe_ppc_state_t* ppc_state, KernelState* state) {
|
||||
SHIM_SET_RETURN(X_STATUS_NO_SUCH_FILE);
|
||||
}
|
||||
|
||||
SHIM_CALL NtClose_shim(
|
||||
xe_ppc_state_t* ppc_state, KernelState* state) {
|
||||
SHIM_SET_RETURN(X_STATUS_NO_SUCH_FILE);
|
||||
}
|
||||
|
||||
} // namespace xboxkrnl
|
||||
} // namespace kernel
|
||||
} // namespace xe
|
||||
|
||||
|
||||
void xe::kernel::xboxkrnl::RegisterFileExports(
|
||||
ExportResolver* export_resolver, KernelState* state) {
|
||||
SHIM_SET_MAPPING("xboxkrnl.exe", NtCreateFile, state);
|
||||
SHIM_SET_MAPPING("xboxkrnl.exe", NtQueryInformationFile, state);
|
||||
SHIM_SET_MAPPING("xboxkrnl.exe", NtReadFile, state);
|
||||
SHIM_SET_MAPPING("xboxkrnl.exe", NtQueryFullAttributesFile, state);
|
||||
SHIM_SET_MAPPING("xboxkrnl.exe", NtClose, state);
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2013 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef XENIA_KERNEL_MODULES_XBOXKRNL_FILE_H_
|
||||
#define XENIA_KERNEL_MODULES_XBOXKRNL_FILE_H_
|
||||
|
||||
#include <xenia/common.h>
|
||||
#include <xenia/core.h>
|
||||
|
||||
#include <xenia/kernel/xbox.h>
|
||||
|
||||
|
||||
namespace xe {
|
||||
namespace kernel {
|
||||
namespace xboxkrnl {
|
||||
|
||||
|
||||
} // namespace xboxkrnl
|
||||
} // namespace kernel
|
||||
} // namespace xe
|
||||
|
||||
|
||||
#endif // XENIA_KERNEL_MODULES_XBOXKRNL_FILE_H_
|
|
@ -0,0 +1,35 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2013 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include <xenia/kernel/modules/xboxkrnl/xboxkrnl_misc.h>
|
||||
|
||||
#include <xenia/kernel/shim_utils.h>
|
||||
#include <xenia/kernel/modules/xboxkrnl/kernel_state.h>
|
||||
#include <xenia/kernel/modules/xboxkrnl/xboxkrnl_private.h>
|
||||
#include <xenia/kernel/modules/xboxkrnl/objects/xthread.h>
|
||||
|
||||
|
||||
using namespace xe;
|
||||
using namespace xe::kernel;
|
||||
using namespace xe::kernel::xboxkrnl;
|
||||
|
||||
|
||||
namespace xe {
|
||||
namespace kernel {
|
||||
namespace xboxkrnl {
|
||||
|
||||
|
||||
} // namespace xboxkrnl
|
||||
} // namespace kernel
|
||||
} // namespace xe
|
||||
|
||||
|
||||
void xe::kernel::xboxkrnl::RegisterMiscExports(
|
||||
ExportResolver* export_resolver, KernelState* state) {
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2013 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef XENIA_KERNEL_MODULES_XBOXKRNL_MISC_H_
|
||||
#define XENIA_KERNEL_MODULES_XBOXKRNL_MISC_H_
|
||||
|
||||
#include <xenia/common.h>
|
||||
#include <xenia/core.h>
|
||||
|
||||
#include <xenia/kernel/xbox.h>
|
||||
|
||||
|
||||
namespace xe {
|
||||
namespace kernel {
|
||||
namespace xboxkrnl {
|
||||
|
||||
|
||||
} // namespace xboxkrnl
|
||||
} // namespace kernel
|
||||
} // namespace xe
|
||||
|
||||
|
||||
#endif // XENIA_KERNEL_MODULES_XBOXKRNL_MISC_H_
|
|
@ -28,11 +28,12 @@ class KernelState;
|
|||
// be using to stash their variables.
|
||||
extern KernelState* shared_kernel_state_;
|
||||
|
||||
|
||||
// Registration functions, one per file.
|
||||
void RegisterDebugExports(ExportResolver* export_resolver, KernelState* state);
|
||||
void RegisterFileExports(ExportResolver* export_resolver, KernelState* state);
|
||||
void RegisterHalExports(ExportResolver* export_resolver, KernelState* state);
|
||||
void RegisterMemoryExports(ExportResolver* export_resolver, KernelState* state);
|
||||
void RegisterMiscExports(ExportResolver* export_resolver, KernelState* state);
|
||||
void RegisterModuleExports(ExportResolver* export_resolver, KernelState* state);
|
||||
void RegisterRtlExports(ExportResolver* export_resolver, KernelState* state);
|
||||
void RegisterThreadingExports(ExportResolver* export_resolver,
|
||||
|
|
|
@ -42,6 +42,7 @@ public:
|
|||
kTypeModule = 0x00000001,
|
||||
kTypeThread = 0x00000002,
|
||||
kTypeEvent = 0x00000003,
|
||||
kTypeFile = 0x00000004,
|
||||
};
|
||||
|
||||
XObject(KernelState* kernel_state, Type type);
|
||||
|
|
Loading…
Reference in New Issue