diff --git a/libdmabufheap/include/dmabuf_alloc.h b/libdmabufheap/include/dmabuf_alloc.h index 7e15867ec13a0d6cb0d09428d6a5fce58d6a3abc..07ec54b86091ef90aa141b6462ae1b4036bef6e8 100644 --- a/libdmabufheap/include/dmabuf_alloc.h +++ b/libdmabufheap/include/dmabuf_alloc.h @@ -37,6 +37,7 @@ typedef enum { typedef struct { unsigned int fd; size_t size; + unsigned int heapFlags; } DmabufHeapBuffer; int DmabufHeapOpen(const char *heapName); diff --git a/libdmabufheap/src/dmabuf_alloc.c b/libdmabufheap/src/dmabuf_alloc.c index 823088282378840cf0c646556a3e72df1486951d..eddf21171dfd74baebe90c64a3df200ffe56c23a 100644 --- a/libdmabufheap/src/dmabuf_alloc.c +++ b/libdmabufheap/src/dmabuf_alloc.c @@ -36,7 +36,7 @@ static bool IsHeapNameValid(const char *heapName) { if ((heapName == NULL) || (strlen(heapName) == 0) || - (strlen(heapName) >= HEAP_NAME_MAX_LEN)) { + (strlen(heapName) > HEAP_NAME_MAX_LEN)) { return false; } @@ -87,6 +87,7 @@ int DmabufHeapBufferAlloc(unsigned int heapFd, DmabufHeapBuffer *buffer) struct dma_heap_allocation_data data = { .len = buffer->size, .fd_flags = O_RDWR | O_CLOEXEC, + .heap_flags = buffer->heapFlags, }; int ret = ioctl(heapFd, DMA_HEAP_IOCTL_ALLOC, &data); if (ret < 0) { diff --git a/libdmabufheap/test/unittest/libdmabufheap/dmabuf_alloc_test.cpp b/libdmabufheap/test/unittest/libdmabufheap/dmabuf_alloc_test.cpp index e6daa2e8999e4c29f0f947e2b9d415d7fbfc66e6..0cd07b395abe90aa4f9b7a1cb159483fd674617f 100644 --- a/libdmabufheap/test/unittest/libdmabufheap/dmabuf_alloc_test.cpp +++ b/libdmabufheap/test/unittest/libdmabufheap/dmabuf_alloc_test.cpp @@ -61,7 +61,7 @@ HWTEST_F(DmabufAllocTest, AllocSingleBuffer, TestSize.Level1) int heapFd = DmabufHeapOpen("system"); ASSERT_GE(heapFd, 0); - DmabufHeapBuffer buffer = { .size = BUFFER_SIZE }; + DmabufHeapBuffer buffer = { .size = BUFFER_SIZE, .heapFlags = 0 }; ASSERT_EQ(0, DmabufHeapBufferAlloc(heapFd, &buffer)); void *ptr = mmap(NULL, BUFFER_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, buffer.fd, 0); @@ -87,7 +87,7 @@ HWTEST_F(DmabufAllocTest, ShareBufferBetweenProcess, Function|MediumTest|Level1) int heapFd = DmabufHeapOpen("system"); ASSERT_GE(heapFd, 0); - DmabufHeapBuffer buffer = { .size = BUFFER_SIZE }; + DmabufHeapBuffer buffer = { .size = BUFFER_SIZE, .heapFlags = 0 }; ASSERT_EQ(0, DmabufHeapBufferAlloc(heapFd, &buffer)); void *ptr = mmap(NULL, BUFFER_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, buffer.fd, 0); @@ -168,7 +168,7 @@ HWTEST_F(DmabufAllocTest, BufferSyncWithWrongFd, Function|MediumTest|Level1) int heapFd = DmabufHeapOpen("system"); ASSERT_GE(heapFd, 0); - DmabufHeapBuffer buffer = { .size = BUFFER_SIZE }; + DmabufHeapBuffer buffer = { .size = BUFFER_SIZE, .heapFlags = 0 }; ASSERT_EQ(0, DmabufHeapBufferAlloc(heapFd, &buffer)); void *ptr = mmap(NULL, BUFFER_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, buffer.fd, 0); @@ -192,7 +192,7 @@ HWTEST_F(DmabufAllocTest, BufferSyncWithWrongSyncType, Function|MediumTest|Level int heapFd = DmabufHeapOpen("system"); ASSERT_GE(heapFd, 0); - DmabufHeapBuffer buffer = { .size = BUFFER_SIZE }; + DmabufHeapBuffer buffer = { .size = BUFFER_SIZE, .heapFlags = 0 }; ASSERT_EQ(0, DmabufHeapBufferAlloc(heapFd, &buffer)); void *ptr = mmap(NULL, BUFFER_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, buffer.fd, 0); @@ -214,7 +214,7 @@ HWTEST_F(DmabufAllocTest, SyncBufferTwice, Function|MediumTest|Level1) int heapFd = DmabufHeapOpen("system"); ASSERT_GE(heapFd, 0); - DmabufHeapBuffer buffer = { .size = BUFFER_SIZE }; + DmabufHeapBuffer buffer = { .size = BUFFER_SIZE, .heapFlags = 0 }; ASSERT_EQ(0, DmabufHeapBufferAlloc(heapFd, &buffer)); void *ptr = mmap(NULL, BUFFER_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, buffer.fd, 0); @@ -244,7 +244,7 @@ HWTEST_F(DmabufAllocTest, ExchangeBufferSyncOrder, Function|MediumTest|Level1) int heapFd = DmabufHeapOpen("system"); ASSERT_GE(heapFd, 0); - DmabufHeapBuffer buffer = { .size = BUFFER_SIZE }; + DmabufHeapBuffer buffer = { .size = BUFFER_SIZE, .heapFlags = 0 }; ASSERT_EQ(0, DmabufHeapBufferAlloc(heapFd, &buffer)); void *ptr = mmap(NULL, BUFFER_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, buffer.fd, 0);