Skip to content

Commit 6b6b16e

Browse files
committed
Remove umf_mem_visibility_t
Right now, only PRIVATE memory is supported. Additional research is needed to decide how to expose SHARED memory.
1 parent 73706ea commit 6b6b16e

File tree

7 files changed

+6
-98
lines changed

7 files changed

+6
-98
lines changed

benchmark/ubench.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@ UBENCH_EX(simple, glibc_malloc) {
9999

100100
static umf_os_memory_provider_params_t UMF_OS_MEMORY_PROVIDER_PARAMS = {
101101
/* .protection = */ UMF_PROTECTION_READ | UMF_PROTECTION_WRITE,
102-
/* .visibility = */ UMF_VISIBILITY_PRIVATE,
103102

104103
// NUMA config
105104
/* .nodemask = */ NULL,

include/umf/providers/provider_os_memory.h

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,6 @@ typedef enum umf_mem_protection_flags_t {
2525
UMF_PROTECTION_MAX // must be the last one
2626
} umf_mem_protection_flags_t;
2727

28-
typedef enum umf_mem_visibility_t {
29-
UMF_VISIBILITY_SHARED,
30-
UMF_VISIBILITY_PRIVATE,
31-
} umf_mem_visibility_t;
32-
3328
typedef enum umf_numa_mode_t {
3429
UMF_NUMA_MODE_DEFAULT,
3530
UMF_NUMA_MODE_BIND,
@@ -47,9 +42,6 @@ typedef enum umf_purge_advise_t {
4742
typedef struct umf_os_memory_provider_params_t {
4843
/// combination of 'umf_mem_protection_flags_t' flags
4944
unsigned protection;
50-
/// shared or private visibility of memory mapped by a provider
51-
/// sets MAP_SHARED and MAP_PRIVATE flags respectively on internal mmap() calls
52-
umf_mem_visibility_t visibility;
5345

5446
// NUMA config
5547
/// nodemask used in internal mbind() calls
@@ -82,7 +74,6 @@ static inline umf_os_memory_provider_params_t
8274
umfOsMemoryProviderParamsDefault(void) {
8375
umf_os_memory_provider_params_t params = {
8476
UMF_PROTECTION_READ | UMF_PROTECTION_WRITE, /* protection */
85-
UMF_VISIBILITY_PRIVATE, /* visibility */
8677
NULL, /* nodemask */
8778
0, /* maxnode */
8879
UMF_NUMA_MODE_DEFAULT, /* numa_mode */

src/provider/provider_os_memory.c

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222

2323
typedef struct umf_os_memory_provider_config_t {
2424
unsigned protection; // combination of OS-specific protection flags
25-
unsigned visibility;
2625

2726
// NUMA config
2827
unsigned long *nodemask;
@@ -35,7 +34,6 @@ typedef struct umf_os_memory_provider_config_t {
3534

3635
typedef struct os_memory_provider_t {
3736
unsigned protection; // combination of OS-specific protection flags
38-
unsigned visibility;
3937

4038
// NUMA config
4139
hwloc_bitmap_t nodeset;
@@ -196,16 +194,6 @@ static umf_result_t translate_params(umf_os_memory_provider_params_t *in_params,
196194
}
197195
provider->protection = ret;
198196

199-
ret = os_translate_mem_visibility(in_params->visibility);
200-
if (ret < 0) {
201-
if (in_params->traces) {
202-
fprintf(stderr, "error: incorrect memory visibility mode: %u\n",
203-
in_params->visibility);
204-
}
205-
return UMF_RESULT_ERROR_INVALID_ARGUMENT;
206-
}
207-
provider->visibility = ret;
208-
209197
// NUMA config
210198
int emptyNodeset = (!in_params->maxnode || !in_params->nodemask);
211199
ret = translate_numa_mode(in_params->numa_mode, emptyNodeset);
@@ -233,18 +221,6 @@ static umf_result_t os_initialize(void *params, void **provider) {
233221
umf_os_memory_provider_params_t *in_params =
234222
(umf_os_memory_provider_params_t *)params;
235223

236-
if (in_params->visibility == UMF_VISIBILITY_SHARED &&
237-
in_params->numa_mode != UMF_NUMA_MODE_DEFAULT) {
238-
// TODO: add support for that
239-
if (in_params->traces) {
240-
fprintf(stderr,
241-
"NUMA binding mode (%i) not supported for "
242-
"UMF_VISIBILITY_SHARED\n",
243-
in_params->numa_mode);
244-
}
245-
return UMF_RESULT_ERROR_INVALID_ARGUMENT;
246-
}
247-
248224
umf_ba_pool_t *base_allocator =
249225
umf_ba_get_pool(sizeof(os_memory_provider_t));
250226
if (!base_allocator) {
@@ -379,13 +355,12 @@ static umf_result_t os_alloc(void *provider, size_t size, size_t alignment,
379355
return UMF_RESULT_ERROR_INVALID_ARGUMENT;
380356
}
381357

382-
int flags = os_provider->visibility;
383358
int protection = os_provider->protection;
384359

385360
void *addr = NULL;
386361
errno = 0;
387-
ret = os_mmap_aligned(NULL, size, alignment, page_size, protection, flags,
388-
-1, 0, &addr);
362+
ret = os_mmap_aligned(NULL, size, alignment, page_size, protection, -1, 0,
363+
&addr);
389364
if (ret) {
390365
os_store_last_native_error(UMF_OS_RESULT_ERROR_ALLOC_FAILED, errno);
391366
if (os_provider->traces) {

src/provider/provider_os_memory_internal.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,8 @@ int os_translate_flags(unsigned in_flags, unsigned max,
2020

2121
int os_translate_mem_protection_flags(unsigned protection);
2222

23-
int os_translate_mem_visibility(umf_mem_visibility_t visibility);
24-
2523
int os_mmap_aligned(void *hint_addr, size_t length, size_t alignment,
26-
size_t page_size, int prot, int flags, int fd, long offset,
24+
size_t page_size, int prot, int fd, long offset,
2725
void **out_addr);
2826

2927
int os_munmap(void *addr, size_t length);

src/provider/provider_os_memory_linux.c

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,6 @@ int os_translate_mem_protection_flags(unsigned protection_flags) {
3434
os_translate_mem_protection_one_flag);
3535
}
3636

37-
int os_translate_mem_visibility(umf_mem_visibility_t visibility) {
38-
switch (visibility) {
39-
case UMF_VISIBILITY_SHARED:
40-
return MAP_SHARED;
41-
case UMF_VISIBILITY_PRIVATE:
42-
return MAP_PRIVATE;
43-
}
44-
assert(0);
45-
return -1;
46-
}
47-
4837
static int os_translate_purge_advise(umf_purge_advise_t advise) {
4938
switch (advise) {
5039
case UMF_PURGE_LAZY:
@@ -63,7 +52,7 @@ static inline void assert_is_page_aligned(uintptr_t ptr, size_t page_size) {
6352
}
6453

6554
int os_mmap_aligned(void *hint_addr, size_t length, size_t alignment,
66-
size_t page_size, int prot, int flags, int fd, long offset,
55+
size_t page_size, int prot, int fd, long offset,
6756
void **out_addr) {
6857
assert(out_addr);
6958

@@ -78,8 +67,8 @@ int os_mmap_aligned(void *hint_addr, size_t length, size_t alignment,
7867
}
7968

8069
// MAP_ANONYMOUS - the mapping is not backed by any file
81-
void *ptr = mmap(hint_addr, extended_length, prot, MAP_ANONYMOUS | flags,
82-
fd, offset);
70+
void *ptr = mmap(hint_addr, extended_length, prot,
71+
MAP_ANONYMOUS | MAP_PRIVATE, fd, offset);
8372
if (ptr == MAP_FAILED) {
8473
return -1;
8574
}

test/provider_os_memory.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,6 @@ TEST_F(test, create_WRONG_NUMA_MODE) {
133133
umf_os_memory_provider_params_t os_memory_provider_params =
134134
umfOsMemoryProviderParamsDefault();
135135

136-
// NUMA binding mode not supported for UMF_VISIBILITY_SHARED
137-
os_memory_provider_params.visibility = UMF_VISIBILITY_SHARED;
138136
os_memory_provider_params.numa_mode = UMF_NUMA_MODE_BIND;
139137

140138
umf_result = umfMemoryProviderCreate(umfOsMemoryProviderOps(),

test/provider_os_memory_config.cpp

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -188,45 +188,3 @@ TEST_P(providerConfigTestNumaMode, numa_modes) {
188188
}
189189
}
190190
}
191-
192-
struct providerConfigTestVisibility
193-
: providerConfigTest,
194-
testing::WithParamInterface<umf_mem_visibility_t> {
195-
std::string primary_str = "primary";
196-
std::string new_str = "new";
197-
std::string expected_str;
198-
umf_os_memory_provider_params_t params = umfOsMemoryProviderParamsDefault();
199-
200-
void SetUp() override {
201-
providerConfigTest::SetUp();
202-
params.visibility = GetParam();
203-
if (params.visibility == UMF_VISIBILITY_PRIVATE) {
204-
expected_str = primary_str;
205-
} else if (params.visibility == UMF_VISIBILITY_SHARED) {
206-
expected_str = new_str;
207-
}
208-
}
209-
};
210-
211-
INSTANTIATE_TEST_SUITE_P(visibility, providerConfigTestVisibility,
212-
testing::Values(UMF_VISIBILITY_PRIVATE,
213-
UMF_VISIBILITY_SHARED));
214-
215-
TEST_P(providerConfigTestVisibility, visibility) {
216-
create_provider(&params);
217-
allocate_memory();
218-
write_memory(primary_str);
219-
220-
int pid = fork();
221-
if (pid == 0) {
222-
// child process
223-
write_memory(new_str);
224-
} else if (pid > 0) {
225-
// main process
226-
int status;
227-
while (-1 == waitpid(0, &status, 0)) {
228-
// wait for the child process to complete
229-
}
230-
EXPECT_EQ(static_cast<char *>(ptr), expected_str);
231-
}
232-
}

0 commit comments

Comments
 (0)