[Feature-Request] Buffer Partitioning Utility
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
- Issue type
- Feature
- Clarity
- Needs clarification
- Activity status
- Stale
- Tech stack
- c
- Domain
- operating-systems
Research direction
Start with the C example in issue 39 and review how its MemoryPartition structure, create function, and invalidate function define the requested behavior. The issue does not name repository files or tests; done would require a separate buffer-partitioning library that supports the demonstrated partition creation and data access.
Written by the indexing model from the issue text.
Description
Provides an advanced buffer partitioning as a separate library.
For example:
#include<stdio.h>
#include<stdlib.h>
typedef struct {
void* start_address;
void* end_address;
size_t offset;
size_t size;
size_t pointer_location;
void (*invalidate)(void*);
} MemoryPartition;
static inline void invalidate(MemoryPartition* partition) {
partition->start_address += partition->offset;
partition->end_address = partition->start_address + partition->size;
partition->pointer_location = partition->offset + partition->size;
}
static inline MemoryPartition create(void* buffer, size_t offset, size_t size) {
MemoryPartition partition = {
buffer + offset,
(buffer + offset) + size,
offset,
size,
offset + size,
&invalidate
};
return partition;
}
int main() {
const size_t size = 4;
void* buffer = (void*) malloc(size * 3);
printf("Allocated buffer start address = %p\n", buffer);
const MemoryPartition partition0 = create(buffer, 0, size);
printf("Partition0 start address = %p\n", partition0.start_address);
printf("Partition0 end address = %p\n", partition0.end_address);
const MemoryPartition partition1 = create(buffer, partition0.pointer_location + 1, size);
printf("Partition1 start address = %p\n", partition1.start_address);
printf("Partition1 end address = %p\n", partition1.end_address);
const MemoryPartition partition2 = create(buffer, partition1.pointer_location + 1, size);
printf("Partition2 start address = %p\n", partition2.start_address);
printf("Partition2 end address = %p\n", partition2.end_address);
/* add some data to the partitions */
*((int*) partition0.start_address) = 44;
*((int*) partition1.start_address) = 55;
*((int*) partition2.start_address) = 255;
printf("%s\n", "ls part: Print partitions data: ");
printf("%i\n", *((int*) partition0.start_address));
printf("%i\n", *((int*) partition1.start_address));
printf("%i\n", *((int*) partition2.start_address));
return 0;
}
- Dominant language
- Java
- Stars
- 7
- Forks
- 1
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Electrostat-Lab/jme-alloc
-
help wanted question
Difficulty 3/5 1-2 days Newbie friendliness 15/100
Electrostat-Lab/jme-alloc#69 ·
-
CI/CD workflow
Difficulty 5/5 Over a week Newbie friendliness 20/100
Electrostat-Lab/jme-alloc#68 ·
-
core enhancement future-release
Difficulty 2/5 1-3 hours Newbie friendliness 20/100
Electrostat-Lab/jme-alloc#62 ·
-
android bug
Difficulty 4/5 3-5 days Newbie friendliness 25/100
Electrostat-Lab/jme-alloc#37 ·
-
build-script enhancement question
Difficulty 5/5 Over a week Newbie friendliness 25/100
Electrostat-Lab/jme-alloc#33 ·
All issues in Electrostat-Lab/jme-alloc
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
infinispan/infinispan#18150 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
opensearch-project/k-NN#3597 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100