2005-12-14 Martin Hunt * pmap-gen.c (_stp_pmap_new_*): Initialize lock. (_stp_pmap_set_*): Lock map while in use. (_stp_pmap_add_*): Lock map while in use. (_stp_pmap_get_cpu): Ditto. (_stp_pmap_get): Lock each per-cpu map. * map-gen.c: Define and use NULLRET for a NULL return value. * map.c (_stp_pmap_clear): New function. (_stp_pmap_agg): Lock each per-cpu map as it gets aggregated. 2005-12-13 Martin Hunt * map.c (_stp_map_sortn): Set a limit of 30 for n. Automatically call _stp_map_sort() if more is requested. 2005-12-08 Martin Hunt * map.c (_new_map_create): Only increment map size if a node was moved off the free list. (_stp_map_size): New function. (_stp_pmap_size): New function. 2005-12-07 Martin Hunt PR1923 * map.h (struct map_root): Remove membuf. (struct pmap): Define. (PMAP): Declare. * map.c (_stp_map_init): Use kmalloc() to allocate individual nodes instead of using vmalloc() to allocate one big chunk. (_stp_map_new): Use kmalloc. (_stp_pmap_new): Use kmalloc. Return a PMAP. (__stp_map_del): New function. Free all the nodes in a map. (_stp_map_del): Call __stp_map_del() then free map struct. (_stp_pmap_del): Takes a PMAP. Calls __stp_map_del() for each cpu. (_stp_pmap_printn_cpu): Change arg to PMAP. (_stp_pmap_agg): Change arg to PMAP. (_stp_pmap_get_agg): Change arg to PMAP. * map-stat.c (_stp_pmap_new_hstat_linear): Use PMAP instead of MAP. Fix allocations. (_stp_pmap_new_hstat_log): Ditto. * pmap-gen.c Fix all functions to take or return PMAPS instead of MAPS. * alloc.c: Remove everything except kmalloc_node(). All runtime code now uses kmalloc() directly. 2005-11-30 Martin Hunt * io.c (_stp_exit): To prevent any possible interactions with the probed function, just set a flag here. 2005-11-28 Graydon Hoare * stat-common.c (_stp_stat_print_histogram): Various formatting corrections and aesthetic tweaks. (__stp_stat_add): Correction to linear bucket underflow cases. 2005-11-28 Martin Hunt * alloc.c (__stp_valloc_percpu): Use same code for up and smp. (_stp_per_cpu_ptr): New macro. * user/alloc.c: Ditto. * map.c: Use _stp_map_cpu_ptr(). * map-stat.c: Ditto. * pmap-gen.c: Ditto. * runtime.h: Include alloc.c * user/runtime.h: Ditto. * map.c (_stp_pmap_del): Use _stp_free_percpu() to free pmaps. * map-stat.c (_stp_pmap_new_hstat_log): Fix typo. Call _stp_pmap_new() instead of _stp_map_new(). 2005-11-11 Martin Hunt * map.h: Removed old API macros and prototypes. 2005-11-10 Martin Hunt * pmap-gen.c (_stp_pmap_get()): New function. Aggregates the per-cpu map nodes into an aggregation map node. * map.c (_stp_new_agg): Return a struct map_node *. (_stp_add_agg): If count is 0 when adding, just set the stats. 2005-11-10 Martin Hunt * map.c: Doc updates. (_stp_new_agg): * pmap-gen.c: Change a bunch of generated function names to avoid conflicts with maps with the same key and value types. 2005-11-10 Martin Hunt * map.c (_stp_cmp): Use _stp_div64(). 2005-11-09 Martin Hunt * map.h: Remove HSTAT_LOG and HSTAT_LINEAR. * map-gen.c: Fix comment. * pmap-gen.c: Ditto. 2005-11-09 Martin Hunt * map.c (_stp_cmp): Patch to sort on stats. (_stp_map_sort): Ditto. (_stp_map_sortn): Ditto. 2005-11-09 Martin Hunt * map.c: Change order of includes. 2005-11-09 Martin Hunt * map.h (struct map_root): Delete fields used by old API. * map.c: Remove old map API functions. * map-stat.c (_stp_map_add_stat): Delete. (_stp_pmap_new_hstat_linear): Move here from map.c. (_stp_pmap_new_hstat_log): Ditto. * list.c: Deleted. * map-keys.c: Deleted. * map-values.c: Deleted. * map-int.c: Deleted. 2005-11-08 Martin Hunt * alloc.c (__stp_valloc_percpu): Fix call to vmalloc_node. (vmalloc_node): Remove nonworking code. 2005-11-08 Martin Hunt * map.c (_stp_map_init): New function. Extracted from _stp_map_new() so it can be used in _stp_pmap_new(). (_stp_map_new): Call _stp_map_init(). (_stp_pmap_new): New function. (_stp_pmap_new_hstat_linear): New function. (_stp_pmap_new_hstat_log): New function. (_stp_pmap_del): New function. (_stp_pmap_printn_cpu): New function. (_stp_pmap_printn): New function. (_stp_new_agg): New function. (_stp_add_agg): New function. (_stp_pmap_agg): New function. (_new_map_clear_node): New function. * map.h (struct map_root): Add Hist struct. Add copy and cmp function pointers for pmaps. * stat.h: Remove Stat struct. Replace with Hist struct that is limited to only histogram params. * map-stat.c: Fix up references to histogram params in map_root. * stat-common.c: Ditto. * stat.c: Ditto. * pmap-gen.c: New file. Implements per-cpu maps. * map-gen.c: Minor bug fixes. Use new VAL_IS_ZERO() macro. * alloc.c (vmalloc_node): For NUMA, provide a vmalloc that does node-local allocations. (_stp_alloc_cpu): A version of _stp_alloc() that does node-local allocations. (_stp_valloc): A version of _stp_valloc() that does node-local allocations. (__stp_valloc_percpu): New function. Like alloc_percpu() except uses _stp_valloc(). (_stp_vfree_percpu): New function. Like free_percpu(). 2005-11-04 Martin Hunt * runtime.h: #include . (init_module): Remove old ppc comment. ifdef _stp_kta so it only gets set for x86 and x86_64. 2005-10-31 Martin Hunt * ALL: Cleanup copyrights. 2005-10-28 Martin Hunt * map-gen.c (MAP_GET_VAL): Use the _stp_get_*() functions. (_stp_map_set_*): When setting to "", don't create node if key not found. (_stp_map_get_*): Use new MAP_GET_VAL. Return "" when string lookups not found. * map.c (_stp_get_int64): Check args and return 0 on bad args or wrong type. (_stp_get_stat): Ditto. (_stp_key_get_int64): Ditto. (_stp_get_str): Check args and return "bad type" on bad args or wrong type. (_stp_key_get_str): Ditto. (_new_map_set_str): If setting to "", delete node. (_new_map_get_*): Delete. Use _stp_get_*(). 2005-10-26 Martin Hunt * map-gen.c (KEY4CPY): Fix typo. (KEYCPY): Add missing semicolon. 2005-10-26 Martin Hunt * map-gen.c: New file. * map.c (_new_map_create, _new_map_del_node, _new_map_del_node, _new_map_set_int64, _new_map_set_str,_new_map_get_int64, _new_map_get_str, _new_map_get_stat, _new_map_set_stat): New internal functions for the new API. * map-int.c (__stp_map_set_int64): Modify to return an error code. * map-stat.c (_stp_map_add_stat): Ditto. * map-str (_stp_map_set_str): Ditto. * Doxyfile: Remove predefines NEED_STRING_VALS, NEED_STATS, NEED_INT64. * map-keys.c: Ditto. * list.c (_stp_list_new): Ditto. Also set map->list. * map-values.c: Ditto. 2005-10-19 Martin Hunt * runtime.h (_stp_kallsyms_lookup_tabled): Only compile this for systemtap. Runtime-only examples don't need it. 2005-10-19 Tom Zanussi * print.c (_stp_print_flush): Switch to binary TIMESTAMP. 2005-10-14 Tom Zanussi PR 1455 * string.c (_stp_sprintf): Restore overwritten NULL byte. * print.c: Change STP_PRINT_BUF_LEN to correct size. 2005-10-06 Frank Ch. Eigler PR 1332. * sym.h: New file to declare explicit symbol table struct. * runtime.h (_stp_kallsyms_lookup_tabled): Use it if available. * sym.c (_stp_symbol_sprint): HAS_LOOKUP mooted. 2005-09-30 Graydon Hoare * loc2c-runtime.h (_put_user_asm): Fix bracket-matching. 2005-09-23 Martin Hunt * map.c (_stp_map_sortn): Call _stp_map_sort() when n is 0. 2005-09-23 Martin Hunt * map.c (_stp_cmp): New comparison function for sorts. (_stp_swap): New swap function for bubble sort. (_stp_map_sortn): New function. (_stp_map_sort): New function. (_stp_map_printn): New function. (_stp_map_print): Convert to a macro. 2005-09-22 Martin Hunt * regs.h: PPC64 version from Ananth N Mavinakayanahalli * runtime.h (init_module): Only initialize _stp_kta and _stp_kallsyms_lookup on i386 and x86_64. Define HAS_LOOKUP. * sym.c (_stp_symbol_sprint): If HAS_LOOKUP is not defined, just print address in hex. * current.c (_stp_ret_addr): Add ppc64 version. (_stp_sprint_regs): PPC64 version from Ananth N Mavinakayanahalli 2005-09-14 Martin Hunt * map.c (_stp_map_clear): New function. CLears a map but does not free it. * copy.c (__stp_strncpy_from_user): Add ppc64 support. (_stp_strncpy_from_user): Call access_ok(). (_stp_string_from_user): Ditto. (_stp_copy_from_user): Ditto. 2005-09-12 Martin Hunt * io.c (ERR_STRING): Remove ansi codes. (WARN_STRING): Ditto. 2005-09-12 Martin Hunt * arith.c (_stp_div64): Check for division by 0 or -1 first. This simplifies things and removes the possibility of x86_64 trying LLONG_MIN/-1 and faulting. (_stp_mod64): Ditto. 2005-09-10 Frank Ch. Eigler * arith.c: Add some comments explaining why the last change works. 2005-09-09 Roland McGrath * loc2c-runtime.h [__powerpc__] (store_register): Add #undef. 2005-09-09 Martin Hunt * stat-common.c (_stp_stat_print_valtype): Use _stp_div64(). * arith.c (_stp_div64): Check error before writing to it. Remove check against 32-bit LONG_MIN and -1. That only applies to 64-bit. (_stp_mod64): Ditto. 2005-09-08 Martin Hunt * arith.c (_stp_div64): Check for overflow. (_stp_mod64): Ditto. 2005-09-08 Martin Hunt * arith.c (_stp_div64): For 64-bit cpus, just use native division. Otherwise call _div64(). (_stp_mod64): Call _mod64() isf necessary. (_div64): 64-bit division for 32-bit cpus. (_mod64): 64-bit modulo for 32-bit cpus. * map-values.c (_stp_map_entry_exists): Remove unused var. 2005-09-01 Martin Hunt * stack.c (_stp_stack_sprint): Add a verbose arg to pass along to underlying funcs. 2005-08-31 Martin Hunt * runtime.h (init_module): Include full prototype info in function cast to satisfy stap. * sym.c (_stp_kallsyms_lookup): Moved to runtime.h. * stack.c (_stp_kta): Moved to runtime.h. * runtime.h (init_module): Initialize _stp_kallsyms_lookup and _stp_kta. * probes.c (_stp_lookup_name): Replaced by kallsyms_lookup_name(). * list.c (_stp_copy_argv_from_user): ifdef this function NEED_STRING_VALS. 2005-08-30 Roland McGrath * loc2c-runtime.h (fetch_register, store_register): Rewritten to pass REGS to dwarf_register_ as a macro argument. [__i386__, __x86_64__]: Update dwarf_register_* macros. [__i386__] (dwarf_register_4): Define special case for stack pointer. 2005-08-29 Martin Hunt * list.c (_stp_copy_argv_from_user): Move to here. * copy.c (_stp_copy_argv_from_user): Delete. * runtime.h: Always include copy.h. 2005-08-25 Roland McGrath * loc2c-runtime.h (deref_string): Rewritten using deref. 2005-08-24 Roland McGrath * loc2c-runtime.h (deref_string): New macro. 2005-08-24 Martin Hunt * io.c (_stp_vlog): Send warnings and errors to STP_OOB_DATA. 2005-08-23 Martin Hunt * runtime.h: Add a prototype for _stp_dbug(). 2005-08-22 Martin Hunt * runtime.h (kbug): New dbug macros that calls printk. 2005-08-21 Frank Ch. Eigler * arith.c (*): Adapt to last_error context variable. 2005-08-19 Frank Ch. Eigler * arith.c (_stp_random_pm): New function. 2005-08-19 Martin Hunt * print.c: Change ifdefs to STP_RELAYFS. * runtime.h: Ditto. * io.c (_stp_vlog): Call _stp_write instead of _stp_ctrl_send. * Makefile: Don't build stp-control. * README.doc: Update. * TODO: Update. 2005-08-12 Graydon Hoare * map-values.c (_stp_map_entry_exists): New function. * map.h (_stp_map_entry_exists): Declare it. 2005-08-12 Frank Ch. Eigler * arith.c: New file to contain arithmetic helper functions. * builtin_functions.h: Remove, unused. * runtime.h: Include it. 2005-08-10 Roland McGrath * loc2c-runtime.h (store_bitfield): Fix argument use. (store_deref): New macro (three flavors). 2005-08-03 Martin Hunt * io.c (_stp_vlog): Revert previous change for now. * print.c (_stp_print_flush): Ditto. 2005-08-03 Tom Zanussi * io.c (_stp_vlog): Remove call to _stp_print_flush(). * print.c (_stp_print_flush): _stp_warn() on first transport failure. 2005-08-01 Martin Hunt * io.c (_stp_vlog): Use _stp_pid instead os _stp_tport->pid. * print.c (_stp_print_flush): Don't need _stp_tport. *runtime.h (probe_start): Just call _stp_transport_init(). (probe_exit): Just call _stp_transport_close(). 2005-07-28 Graydon Hoare * loc2c-runtime.h: New file from elfutils CVS. 2005-07-20 Martin Hunt * io.c (_stp_vlog): Don't count transport failures for these messages. 2005-07-19 Martin Hunt * print.c (_stp_print_flush): Check return value and increment transport failures. 2005-07-14 Frank Ch. Eigler * builtin_functions.h (printk): Use explicit format string. 2005-07-11 Graydon Hoare * builtin_functions.h: New file. 2005-07-10 Martin Hunt * runtime.h (init_module): Fix return value. 2005-07-08 Martin Hunt * runtime.h: Move some common pieces of modules into this file. Includes MODULE_LICENSE, cleanup_module and init_module. * print.c (_stp_print_flush): Rename "t" to "_stp_tport". * io.c (_stp_vlog): Ditto. 2005-07-01 Martin Hunt * string.c (_stp_string_init): CAll stp_error() on bad init. * list.c (_stp_list_clear): Call _stp_warn(). * probes.c: Convert all _stp_log() calls to either stp_warn() or dbug(). * print.c: Comment out dbug()s. * stat-common.c: Comment out dbug()s. * map.c (_stp_map_new): Call _stp_error() on a bad map type. Comment out dbug()s. * map-stat.c (_stp_map_new_hstat_log): Call _stp_warn(). (_stp_map_new_hstat_linear): Ditto. * map-int.c: Comment out dbug()s. * map-str.c: Comment out dbug()s. * map-keys.c: Use _stp_warn(). Comment out dbug()s. * alloc.c (_stp_alloc): Call _stp_error(). (_stp_valloc): Ditto. * io.c (_stp_warn): New function. (_stp_exit): New function. (_stp_error): New function. (_stp_dbug): New function. * runtime.h (dbug): Call _stp_dbug() if DEBUG is defined. 2005-06-29 Martin Hunt * map-values.c (_stp_map_add_int64): Fix docs. * map-str.c: Fix some docs * map.c: Ditto. * map.doc: Ditto. * current.c (_stp_ret_addr_r): New function. (_stp_probe_addr): New function. (_stp_probe_addr_r): New function. 2005-06-27 Martin Hunt * Doxyfile (PREDEFINED): Added USE_RET_PROBES. * probes.c (_stp_register_kretprobes): New function. (_stp_unregister_kretprobes): New function. 2005-06-20 Tom Zanussi * print.c: Made relayfs _stp_print_flush() use sequence counter. * runtime.h: Added sequence counter, moved subbuf_size etc to probes. 2005-06-18 Martin Hunt * counter.c: New file. Counter aggregations. * stat.c: New file. Stat aggregations. * stat.h: Header file for stats. * map-int.c: New file. Support for int64 values. * map-stat.c: New file. Support for stat values. * map-str.c: New file. Support for string values. * map-values.c: Now just includes the necessary map-*.c files. * stat-common.c: New file. Stats stuff common to Stats and maps containing stats. * Doxyfile: Bumped version to 0.6. * README: Renamed README.doc and reorganized. 2005-06-15 Martin Hunt * current.c (_stp_ret_addr): Fix computation for i386. 2005-06-14 Martin Hunt * README: Removed old docs and replaced with simple build instructions. * Makefile: New file. * probes/build: New file. 2005-06-13 Martin Hunt * print.c (next_fmt): Move this func to print.c. 2005-06-02 Martin Hunt * string.c (_stp_string_cat_cstr): Be sure result is always terminated. * print.c (_stp_vprintf): Fix typo. 2005-05-31 Martin Hunt * map.c (_stp_map_print): Now takes a format string instead of a name. * map.h (foreach): Update macro. * string.c (_stp_string_cat_char): New function. Append a char to a string. * map-keys.c: Don't forget to undef KEYSYM, ALLKEYS and ALLKEYSD. 2005-05-26 Martin Hunt * current.c (_stp_sprint_regs): Implement for i386. * sym.c (_stp_symbol_sprint): Check name before trying to print it. (_stp_symbol_print): Change to macro that calls _stp_symbol_sprint(). 2005-05-18 Martin Hunt * print.c: All functions except _stp_print_flush() are now macros which use _stp_stdout. * string.c: Add _stp_stdout support. Data written to _stp_stdout is automatically flushed when the print buffer is full. * runtime.h: Always include string.c. 2005-05-17 Martin Hunt * map.c (needed_space): Use do_div(). (_stp_map_print_histogram): Ditto. (_stp_map_print): Ditto. * map-values.c (_stp_map_add_int64_stat): Use do_div() when computing histogram bucket. * map-keys.c (_stp_map_key): Fix some warnings on 32-bit machines by using key_data casts. 2005-03-30 Martin Hunt * scbuf.c: Make functions use per-cpu buffers as documented. _stp_scbuf_clear(): Now returns a pointer to the buffer.