KeganHollern / MemStream

Efficient DMA Library
44 stars 12 forks source link

PLEASE READ - V2 MAJOR VERSION SOON(ish) #15

Closed KeganHollern closed 3 months ago

KeganHollern commented 3 months ago

Hi All,

I have been at work on a major version change (breaking) for this library.

I found the version you see here to be a fairly poor outline of what is needed when writing DMA apps. I also found it to be unstable at times.

The new version, I am happy to say, is very stable on Win 10 through 11 (latest) and provides a much friendlier API.

The focus will remain on Windows for some time, but porting to Linux will be a goal of mine after I reach feature parity and update this repository.

Stay tuned. Thanks!

KeganHollern commented 3 months ago

Some psuedocode from v2 api:

// connect to FPGA device
auto gFPGA = new memstream::v2::FPGA();

// print device information (version, configspace ect)
std::cout << gFPGA->getConfiguration()->to_string() << std::endl;
std::cout << "config space: " << std::endl;
memstream::v2::log::buffer(gFPGA->getConfiguration()->configSpace, 0x1000);
std::cout << std::endl;

// initialize v2 memstream input (more stable!)
gInput = new memstream::v2::Input(gFPGA);
gInput->OnKeyStateChange(victim_key_change); // set keyboard callback
gInput->OnMouseMove(victim_mouse_move);

You can also feed in an existing VMM handle if you want to reuse an already constructed handle auto gFPGA = new memstream::v2::FPGA(hVMM);


So you can see I am trying to make it very very similar to the v1 api - but the whole namespace separation stuff I am throwing out for now.

KeganHollern commented 3 months ago

I am also upgrading to the latest version of VMM/MemProcFS- this will support ZDMA devices (Thunderbolt).

KeganHollern commented 3 months ago

Updating memstream to support the latest windows 11 kernel