/
usr
/
share
/
systemtap
/
runtime
/
/usr/share/systemtap/runtime
mkdir
upload
Name
Size
Mode
Actions
dyninst/
-
0755
rm
linux/
-
0755
rm
softfloat/
-
0755
rm
transport/
-
0755
rm
unwind/
-
0755
rm
addr-map.c
523
0644
edit
dl
rm
addr-map.h
1156
0644
edit
dl
rm
alloc.c
498
0644
edit
dl
rm
arith.c
483
0644
edit
dl
rm
common_probe_context.h
6576
0644
edit
dl
rm
common_session_state.h
415
0644
edit
dl
rm
compatdefs.h
3682
0644
edit
dl
rm
copy.c
585
0644
edit
dl
rm
debug.h
485
0644
edit
dl
rm
io.c
508
0644
edit
dl
rm
k_syms.h
182
0644
edit
dl
rm
loc2c-runtime.h
17937
0644
edit
dl
rm
map-gen.c
25977
0644
edit
dl
rm
map-stat.c
3589
0644
edit
dl
rm
map.c
14660
0644
edit
dl
rm
map.h
5918
0644
edit
dl
rm
mempool.c
2644
0644
edit
dl
rm
namespaces.h
487
0644
edit
dl
rm
pmap-gen.c
8710
0644
edit
dl
rm
print.c
486
0644
edit
dl
rm
print.h
872
0644
edit
dl
rm
print_flush.c
3073
0644
edit
dl
rm
probe_lock.h
498
0644
edit
dl
rm
procfs-probes.c
4673
0644
edit
dl
rm
procfs-probes.h
674
0644
edit
dl
rm
procfs.c
4021
0644
edit
dl
rm
proc_fs_compatibility.h
2316
0644
edit
dl
rm
ptrace_compatibility.h
1512
0644
edit
dl
rm
regs.c
4280
0644
edit
dl
rm
regs.h
2352
0644
edit
dl
rm
runtime.h
928
0644
edit
dl
rm
runtime_context.h
669
0644
edit
dl
rm
runtime_defines.h
3582
0644
edit
dl
rm
softfloat.c
77159
0644
edit
dl
rm
softfloat.h
5125
0644
edit
dl
rm
stack-arm.c
1688
0644
edit
dl
rm
stack-ia64.c
1083
0644
edit
dl
rm
stack-mips.c
125
0644
edit
dl
rm
stack-s390.c
2362
0644
edit
dl
rm
stack.c
21790
0644
edit
dl
rm
stat-common.c
8486
0644
edit
dl
rm
stat.c
7421
0644
edit
dl
rm
stat.h
1964
0644
edit
dl
rm
stp_helper_lock.h
3669
0644
edit
dl
rm
stp_string.c
8632
0644
edit
dl
rm
stp_string.h
598
0644
edit
dl
rm
stp_task_work.c
3511
0644
edit
dl
rm
stp_utrace.c
94735
0644
edit
dl
rm
stp_utrace.h
14010
0644
edit
dl
rm
sym.c
39757
0644
edit
dl
rm
sym.h
6539
0644
edit
dl
rm
syscall.h
17408
0644
edit
dl
rm
task_finder_vma.c
13290
0644
edit
dl
rm
time.c
14887
0644
edit
dl
rm
timer.c
481
0644
edit
dl
rm
timer.h
482
0644
edit
dl
rm
uidgid_compatibility.h
603
0644
edit
dl
rm
unwind.c
47890
0644
edit
dl
rm
utrace_compatibility.h
3148
0644
edit
dl
rm
vma.c
9545
0644
edit
dl
rm
vsprintf.c
24058
0644
edit
dl
rm
vsprintf.h
1502
0644
edit
dl
rm
Edit:
/usr/share/systemtap/runtime/mempool.c
(2644B)
/* -*- linux-c -*- * Preallocated memory pools * Copyright (C) 2008-2009 Red Hat Inc. * * This file is part of systemtap, and is free software. You can * redistribute it and/or modify it under the terms of the GNU General * Public License (GPL); either version 2, or (at your option) any * later version. */ #ifndef _STP_MEMPOOL_C_ #define _STP_MEMPOOL_C_ /* An opaque struct identifying the memory pool. */ typedef struct { struct list_head free_list; unsigned num; unsigned size; stp_spinlock_t lock; } _stp_mempool_t; /* for internal use only */ struct _stp_mem_buffer { struct list_head list; _stp_mempool_t *pool; void *buf; }; /* Delete a memory pool */ static void _stp_mempool_destroy(_stp_mempool_t *pool) { struct list_head *p, *tmp; if (pool) { list_for_each_safe(p, tmp, &pool->free_list) { list_del(p); _stp_vfree(p); } _stp_kfree(pool); } } /* Create a new memory pool */ static _stp_mempool_t *_stp_mempool_init(size_t size, size_t num) { int i, alloc_size; struct _stp_mem_buffer *m; _stp_mempool_t *pool = (_stp_mempool_t *)_stp_kmalloc(sizeof(_stp_mempool_t)); if (unlikely(pool == NULL)) { errk("Memory allocation failed.\n"); return NULL; } INIT_LIST_HEAD(&pool->free_list); stp_spin_lock_init(&pool->lock); alloc_size = size + sizeof(struct _stp_mem_buffer) - sizeof(void *); for (i = 0; i < num; i++) { m = (struct _stp_mem_buffer *)_stp_vzalloc(alloc_size); if (unlikely(m == NULL)) goto err; m->pool = pool; list_add((struct list_head *)m, &pool->free_list); } pool->num = num; pool->size = alloc_size; return pool; err: _stp_mempool_destroy(pool); return NULL; } /* allocate a buffer from a memory pool */ static void *_stp_mempool_alloc(_stp_mempool_t *pool) { unsigned long flags; struct _stp_mem_buffer *ptr = NULL; /* PR14804: tolerate accidental early call, before pool is actually initialized. */ if (pool == NULL) return NULL; stp_spin_lock_irqsave(&pool->lock, flags); if (likely(!list_empty(&pool->free_list))) { ptr = (struct _stp_mem_buffer *)pool->free_list.next; list_del_init(&ptr->list); stp_spin_unlock_irqrestore(&pool->lock, flags); return &ptr->buf; } stp_spin_unlock_irqrestore(&pool->lock, flags); return NULL; } /* return a buffer to its memory pool */ static void _stp_mempool_free(void *buf) { unsigned long flags; struct _stp_mem_buffer *m = container_of(buf, struct _stp_mem_buffer, buf); stp_spin_lock_irqsave(&m->pool->lock, flags); list_add(&m->list, &m->pool->free_list); stp_spin_unlock_irqrestore(&m->pool->lock, flags); } #endif /* _STP_MEMPOOL_C_ */
Save
cmd:
run