diff --git a/src/system/kernel/device_manager/io_requests.cpp b/src/system/kernel/device_manager/io_requests.cpp index e83db518e2..6d023eb665 100644 --- a/src/system/kernel/device_manager/io_requests.cpp +++ b/src/system/kernel/device_manager/io_requests.cpp @@ -8,6 +8,7 @@ #include +#include #include #include #include @@ -70,7 +71,7 @@ IOBuffer::SetVecs(const iovec* vecs, uint32 count, size_t length, uint32 flags) memcpy(fVecs, vecs, sizeof(iovec) * count); fVecCount = count; fLength = length; - fUser = (flags & B_USER_IO_REQUEST) != 0; + fUser = IS_USER_ADDRESS(vecs[0].iov_base); fPhysical = (flags & B_PHYSICAL_IO_REQUEST) != 0; } diff --git a/src/system/kernel/device_manager/io_requests.h b/src/system/kernel/device_manager/io_requests.h index 04bdd1ccaa..57265c70a6 100644 --- a/src/system/kernel/device_manager/io_requests.h +++ b/src/system/kernel/device_manager/io_requests.h @@ -18,7 +18,8 @@ #define B_PHYSICAL_IO_REQUEST 0x01 /* buffer points to physical memory */ -#define B_USER_IO_REQUEST 0x02 /* buffer points to user memory */ +#define B_VIP_IO_REQUEST 0x02 /* used by the page writer -- make sure + allocations won't fail */ struct DMABuffer; struct IOOperation; diff --git a/src/tests/system/kernel/device_manager/dma_resource_test.cpp b/src/tests/system/kernel/device_manager/dma_resource_test.cpp index 76ef1af78c..476ef6b894 100644 --- a/src/tests/system/kernel/device_manager/dma_resource_test.cpp +++ b/src/tests/system/kernel/device_manager/dma_resource_test.cpp @@ -647,13 +647,13 @@ run_tests_no_restrictions(TestSuiteContext& context) TestSuite suite(context, "no restrictions", restrictions, 512); - suite.AddTest(0, 1024, false, B_USER_IO_REQUEST) + suite.AddTest(0, 1024, false, 0) .AddSource(0, 1024) .NextResult(0, false, false) .AddTarget(0, 1024, false); // read partial begin/end - suite.AddTest(23, 1024, false, B_USER_IO_REQUEST) + suite.AddTest(23, 1024, false, 0) .AddSource(0, 1024) .NextResult(0, true, true) .AddTarget(0, 23, true) @@ -661,7 +661,7 @@ run_tests_no_restrictions(TestSuiteContext& context) .AddTarget(23, 512 - 23, true); // read less than a block - suite.AddTest(23, 30, false, B_USER_IO_REQUEST) + suite.AddTest(23, 30, false, 0) .AddSource(0, 1024) .NextResult(0, true, true) .AddTarget(0, 23, true) @@ -669,7 +669,7 @@ run_tests_no_restrictions(TestSuiteContext& context) .AddTarget(23, 512 - 53, true); // write begin/end - suite.AddTest(23, 1024, true, B_USER_IO_REQUEST) + suite.AddTest(23, 1024, true, 0) .AddSource(0, 1024) .NextResult(0, true, true) .AddTarget(0, 512, true) @@ -677,7 +677,7 @@ run_tests_no_restrictions(TestSuiteContext& context) .AddTarget(512, 512, true); // read partial end, length < iovec length - suite.AddTest(0, 1028, false, B_USER_IO_REQUEST) + suite.AddTest(0, 1028, false, 0) .AddSource(0, 512) .AddSource(1024, 1024) .NextResult(0, false, true) @@ -686,7 +686,7 @@ run_tests_no_restrictions(TestSuiteContext& context) .AddTarget(0, 508, true); // write partial end, length < iovec length - suite.AddTest(0, 1028, true, B_USER_IO_REQUEST) + suite.AddTest(0, 1028, true, 0) .AddSource(0, 512) .AddSource(1024, 1024) .NextResult(0, false, true) @@ -714,7 +714,7 @@ run_tests_address_restrictions(TestSuiteContext& context) TestSuite suite(context, "address", restrictions, 512); - suite.AddTest(0, 1024, false, B_USER_IO_REQUEST) + suite.AddTest(0, 1024, false, 0) .AddSource(0, 1024) .NextResult(0, false, false) .AddTarget(0, 512, true) @@ -765,7 +765,7 @@ run_tests_boundary_restrictions(TestSuiteContext& context) TestSuite suite(context, "boundary", restrictions, 512); - suite.AddTest(0, 2000, false, B_USER_IO_REQUEST) + suite.AddTest(0, 2000, false, 0) .AddSource(0, 2048) .NextResult(0, false, false) .AddTarget(0, 1024, false) @@ -792,7 +792,7 @@ run_tests_segment_restrictions(TestSuiteContext& context) TestSuite suite(context, "segment", restrictions, 512); - suite.AddTest(0, 4096, false, B_USER_IO_REQUEST) + suite.AddTest(0, 4096, false, 0) .AddSource(0, 4096) .NextResult(0, false, false) .AddTarget(0, 1024, false) @@ -820,7 +820,7 @@ run_tests_transfer_restrictions(TestSuiteContext& context) TestSuite suite(context, "transfer", restrictions, 512); - suite.AddTest(0, 4000, false, B_USER_IO_REQUEST) + suite.AddTest(0, 4000, false, 0) .AddSource(0, 4096) .NextResult(0, false, false) .AddTarget(0, 1024, false) @@ -853,7 +853,7 @@ run_tests_interesting_restrictions(TestSuiteContext& context) TestSuite suite(context, "interesting", restrictions, 512); // read with partial begin/end - suite.AddTest(32, 1000, false, B_USER_IO_REQUEST) + suite.AddTest(32, 1000, false, 0) .AddSource(0, 1024) .NextResult(0, true, true) .AddTarget(0, 32, true) @@ -863,7 +863,7 @@ run_tests_interesting_restrictions(TestSuiteContext& context) .AddTarget(512, 32, true); // write with partial begin/end - suite.AddTest(32, 1000, true, B_USER_IO_REQUEST) + suite.AddTest(32, 1000, true, 0) .AddSource(0, 1024) .NextResult(0, true, true) .AddTarget(0, 512, true) @@ -886,7 +886,7 @@ run_tests_interesting_restrictions(TestSuiteContext& context) TestSuite suite2(context, "interesting2", restrictions, 512); - suite2.AddTest(32, 1000, false, B_USER_IO_REQUEST) + suite2.AddTest(32, 1000, false, 0) .AddSource(0, 1024) .NextResult(0, true, false) .AddTarget(0, 32, true) @@ -915,13 +915,13 @@ run_tests_mean_restrictions(TestSuiteContext& context) TestSuite suite(context, "mean", restrictions, 512); - suite.AddTest(0, 1024, false, B_USER_IO_REQUEST) + suite.AddTest(0, 1024, false, 0) .AddSource(0, 1024) .NextResult(0, false, false) .AddTarget(0, 512, true) .AddTarget(512, 512, true); - suite.AddTest(0, 1024, false, B_USER_IO_REQUEST) + suite.AddTest(0, 1024, false, 0) .AddSource(1024 + 32, 1024) .NextResult(0, false, false) .AddTarget(1024 + 32, 512, false) @@ -1101,8 +1101,7 @@ dma_test_read(void *cookie, off_t pos, void *buffer, size_t *_length) #if 1 IORequest request; - status_t status = request.Init(pos, buffer, length, false, - B_USER_IO_REQUEST); + status_t status = request.Init(pos, buffer, length, false, 0); if (status != B_OK) return status; @@ -1134,8 +1133,7 @@ dma_test_write(void *cookie, off_t pos, const void *buffer, size_t *_length) #if 1 IORequest request; - status_t status = request.Init(pos, (void*)buffer, length, true, - B_USER_IO_REQUEST); + status_t status = request.Init(pos, (void*)buffer, length, true, 0); if (status != B_OK) return status;