[denali] Add a stub client for denali
This commit is contained in:
parent
a202bf2371
commit
45cf2115da
5 changed files with 63 additions and 1 deletions
|
|
@ -9,7 +9,7 @@ add_executable(denali
|
|||
|
||||
target_include_directories(denali
|
||||
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/include")
|
||||
|
||||
target_link_libraries(denali
|
||||
cxx
|
||||
|
|
@ -20,3 +20,19 @@ set_target_properties(denali PROPERTIES
|
|||
COMPILE_FLAGS "${CMAKE_CXX_FLAGS} ${BASE_COMPILE_FLAGS}"
|
||||
LINK_FLAGS "${CMAKE_EXE_LINK_FLAGS} ${BASE_LINK_FLAGS}"
|
||||
)
|
||||
|
||||
add_library(libdenali
|
||||
client/denali_client.cpp
|
||||
)
|
||||
|
||||
target_include_directories(libdenali
|
||||
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
|
||||
|
||||
target_link_libraries(libdenali
|
||||
mammoth_lib)
|
||||
|
||||
set_target_properties(libdenali PROPERTIES
|
||||
COMPILE_FLAGS "${CMAKE_CXX_FLAGS} ${BASE_COMPILE_FLAGS}"
|
||||
LINK_FLAGS "${CMAKE_EXE_LINK_FLAGS} ${BASE_LINK_FLAGS}"
|
||||
)
|
||||
|
|
|
|||
21
sys/denali/client/denali_client.cpp
Normal file
21
sys/denali/client/denali_client.cpp
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#include "denali/denali_client.h"
|
||||
|
||||
#include <mammoth/debug.h>
|
||||
|
||||
#include "denali/denali.h"
|
||||
|
||||
MappedMemoryRegion DenaliClient::ReadSectors(uint64_t device_id, uint64_t lba,
|
||||
uint64_t num_sectors) {
|
||||
DenaliRead read{
|
||||
.device_id = device_id,
|
||||
.lba = lba,
|
||||
.size = num_sectors,
|
||||
};
|
||||
check(channel_.WriteStruct(&read));
|
||||
|
||||
DenaliReadResponse resp;
|
||||
uint64_t mem_cap;
|
||||
check(channel_.ReadStructAndCap(&resp, &mem_cap));
|
||||
|
||||
return MappedMemoryRegion::FromCapability(mem_cap);
|
||||
}
|
||||
15
sys/denali/include/denali/denali_client.h
Normal file
15
sys/denali/include/denali/denali_client.h
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#pragma once
|
||||
|
||||
#include <mammoth/channel.h>
|
||||
#include <mammoth/memory_region.h>
|
||||
|
||||
class DenaliClient {
|
||||
public:
|
||||
DenaliClient(const Channel& channel) : channel_(channel) {}
|
||||
|
||||
MappedMemoryRegion ReadSectors(uint64_t device_id, uint64_t lba,
|
||||
uint64_t num_sectors);
|
||||
|
||||
private:
|
||||
Channel channel_;
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue