Lines Matching refs:seg

66  * number of active blocks (seg->n_blocks) using its shared memory.
81 static bool segment_is_permanent(pa_memimport_segment *seg) {
82 pa_assert(seg);
83 return seg->memory.type == PA_MEM_TYPE_SHARED_MEMFD;
167 static void segment_detach(pa_memimport_segment *seg);
1080 pa_memimport_segment* seg;
1086 seg = pa_xnew0(pa_memimport_segment, 1);
1088 if (pa_shm_attach(&seg->memory, type, shm_id, memfd_fd, writable) < 0) {
1089 pa_xfree(seg);
1093 seg->writable = writable;
1094 seg->import = i;
1095 seg->trap = pa_memtrap_add(seg->memory.ptr, seg->memory.size);
1097 pa_hashmap_put(i->segments, PA_UINT32_TO_PTR(seg->memory.id), seg);
1098 return seg;
1102 static void segment_detach(pa_memimport_segment *seg) {
1103 pa_assert(seg);
1104 pa_assert(seg->n_blocks == (segment_is_permanent(seg) ? 1u : 0u));
1106 pa_hashmap_remove(seg->import->segments, PA_UINT32_TO_PTR(seg->memory.id));
1107 pa_shm_free(&seg->memory);
1109 if (seg->trap)
1110 pa_memtrap_remove(seg->trap);
1112 pa_xfree(seg);
1119 pa_memimport_segment *seg;
1134 PA_HASHMAP_FOREACH(seg, i->segments, state) {
1135 if (segment_is_permanent(seg))
1136 segment_detach(seg);
1170 pa_memimport_segment *seg;
1178 if (!(seg = segment_attach(i, PA_MEM_TYPE_SHARED_MEMFD, shm_id, memfd_fd, writable)))
1184 seg->n_blocks++;
1186 pa_assert(segment_is_permanent(seg));
1198 pa_memimport_segment *seg;
1213 if (!(seg = pa_hashmap_get(i->segments, PA_UINT32_TO_PTR(shm_id)))) {
1221 if (!(seg = segment_attach(i, type, shm_id, -1, writable)))
1225 if (writable && !seg->writable) {
1230 if (offset+size > seg->memory.size)
1242 pa_atomic_ptr_store(&b->data, (uint8_t*) seg->memory.ptr + offset);
1247 b->per_type.imported.segment = seg;
1251 seg->n_blocks++;