/* MALLOCATION */
-#include <stdlib.h>
-
-#define kmalloc(s, t) malloc(s)
-#define kzalloc(s, t) zmalloc(s)
-#define kfree(p) free((void *)p)
-#define kstrdup(s, t) strdup(s)
-
#define zmalloc(s) calloc(1, s)
-#define GFP_KERNEL
-
/* ATTRIBUTES */
#define ____cacheline_aligned
#include <fcntl.h>
#include <ust/kernelcompat.h>
#include <kcompat/kref.h>
+#include <stdlib.h>
#include "buffers.h"
#include "channels.h"
#include "tracer.h"
ltt_release_transport);
ltt_relay_print_buffer_errors(ltt_chan, cpu);
//ust// free(ltt_buf->commit_seq);
- kfree(ltt_buf->commit_count);
+ free(ltt_buf->commit_count);
ltt_buf->commit_count = NULL;
kref_put(<t_chan->kref, ltt_relay_release_channel);
kref_put(&trace->kref, ltt_release_trace);
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-//ust// #include <linux/module.h>
-//ust// #include <linux/ltt-channels.h>
-//ust// #include <linux/mutex.h>
-//ust// #include <linux/vmalloc.h>
-
+#include <stdlib.h>
#include <ust/kernelcompat.h>
+#include <ust/marker.h>
#include "channels.h"
#include "usterr.h"
-#include <ust/marker.h>
/*
* ltt_channel_mutex may be nested inside the LTT trace mutex.
if (uatomic_read(&index_kref.refcount) == 0
&& uatomic_read(&setting->kref.refcount) == 0) {
list_del(&setting->list);
- kfree(setting);
+ free(setting);
free_index = 0;
list_for_each_entry(iter, <t_channels, list) {
iter->index = free_index++;
iter->free_event_id = 0;
}
+ /* FIXME: why not run this? */
//ust// markers_compact_event_ids();
}
}
goto end;
}
}
- setting = kzalloc(sizeof(*setting), GFP_KERNEL);
+ setting = zmalloc(sizeof(*setting));
if (!setting) {
ret = -ENOMEM;
goto end;
else
kref_get(&index_kref);
*nr_channels = free_index;
- channel = kzalloc(sizeof(struct ust_channel) * free_index,
- GFP_KERNEL);
+ channel = zmalloc(sizeof(struct ust_channel) * free_index);
if (!channel) {
WARN("ltt_channel_struct: channel null after alloc");
goto end;
{
lock_markers();
mutex_lock(<t_channel_mutex);
- kfree(channels);
+ free(channels);
kref_put(&index_kref, release_trace_channel);
mutex_unlock(<t_channel_mutex);
unlock_markers();
* LTT marker control module over /proc
*/
-//ust// #include <linux/proc_fs.h>
-//ust// #include <linux/module.h>
-//ust// #include <linux/stat.h>
-//ust// #include <linux/vmalloc.h>
-//ust// #include <linux/marker.h>
-//ust// #include <linux/ltt-tracer.h>
-//ust// #include <linux/uaccess.h>
-//ust// #include <linux/string.h>
-//ust// #include <linux/ctype.h>
-//ust// #include <linux/list.h>
-//ust// #include <linux/mutex.h>
-//ust// #include <linux/seq_file.h>
-//ust// #include <linux/slab.h>
#include <ctype.h>
+#include <stdlib.h>
#include <ust/kernelcompat.h>
-//#include "list.h"
#include "tracer.h"
#include "usterr.h"
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-//ust// #include <linux/module.h>
-//ust// #include <linux/mutex.h>
-//ust// #include <linux/types.h>
-//#include "jhash.h"
-//#include "list.h"
-//#include "rcupdate.h"
-//ust// #include <linux/marker.h>
-#include <errno.h>
-//ust// #include <linux/slab.h>
-//ust// #include <linux/immediate.h>
-//ust// #include <linux/sched.h>
-//ust// #include <linux/uaccess.h>
-//ust// #include <linux/user_marker.h>
-//ust// #include <linux/ltt-tracer.h>
+#include <stdlib.h>
+#include <errno.h>
#define _LGPL_SOURCE
#include <urcu-bp.h>
#include <ust/kernelcompat.h>
-
#include <ust/marker.h>
+
#include "usterr.h"
#include "channels.h"
#include "tracercore.h"
{
struct marker_entry *entry = container_of(head,
struct marker_entry, rcu);
- kfree(entry->oldptr);
+ free(entry->oldptr);
/* Make sure we free the data before setting the pending flag to 0 */
smp_wmb();
entry->rcu_pending = 0;
return ERR_PTR(-EBUSY);
}
/* + 2 : one for new probe, one for NULL func */
- new = kzalloc((nr_probes + 2) * sizeof(struct marker_probe_closure),
- GFP_KERNEL);
+ new = zmalloc((nr_probes + 2) * sizeof(struct marker_probe_closure));
if (new == NULL)
return ERR_PTR(-ENOMEM);
if (!old)
int j = 0;
/* N -> M, (N > 1, M > 1) */
/* + 1 for NULL */
- new = kzalloc((nr_probes - nr_del + 1)
- * sizeof(struct marker_probe_closure), GFP_KERNEL);
+ new = zmalloc((nr_probes - nr_del + 1) * sizeof(struct marker_probe_closure));
if (new == NULL)
return ERR_PTR(-ENOMEM);
for (i = 0; old[i].func; i++)
}
}
/*
- * Using kmalloc here to allocate a variable length element. Could
+ * Using malloc here to allocate a variable length element. Could
* cause some memory fragmentation if overused.
*/
- e = kmalloc(sizeof(struct marker_entry)
- + channel_len + name_len + format_len,
- GFP_KERNEL);
+ e = malloc(sizeof(struct marker_entry)
+ + channel_len + name_len + format_len);
if (!e)
return ERR_PTR(-ENOMEM);
memcpy(e->channel, channel, channel_len);
return -EBUSY;
hlist_del(&e->hlist);
if (e->format_allocated)
- kfree(e->format);
+ free(e->format);
ret = ltt_channels_unregister(e->channel);
WARN_ON(ret);
/* Make sure the call_rcu has been executed */
//ust// if (e->rcu_pending)
//ust// rcu_barrier_sched();
- kfree(e);
+ free(e);
return 0;
}
*/
static int marker_set_format(struct marker_entry *entry, const char *format)
{
- entry->format = kstrdup(format, GFP_KERNEL);
+ entry->format = strdup(format);
if (!entry->format)
return -ENOMEM;
entry->format_allocated = 1;
struct marker_entry *entry;
int ret = 0;
struct marker_probe_closure *old;
- const char *channel = NULL, *name = NULL;
+ char *channel = NULL, *name = NULL;
mutex_lock(&markers_mutex);
entry = get_marker_from_private_data(probe, probe_private);
//ust// if (entry->rcu_pending)
//ust// rcu_barrier_sched();
old = marker_entry_remove_probe(entry, NULL, probe_private);
- channel = kstrdup(entry->channel, GFP_KERNEL);
- name = kstrdup(entry->name, GFP_KERNEL);
+ channel = strdup(entry->channel);
+ name = strdup(entry->name);
mutex_unlock(&markers_mutex);
marker_update_probes();
remove_marker(channel, name);
end:
mutex_unlock(&markers_mutex);
- kfree(channel);
- kfree(name);
+ free(channel);
+ free(name);
return ret;
}
//ust// EXPORT_SYMBOL_GPL(marker_probe_unregister_private_data);
hlist_for_each_entry_safe(umark, pos, n, head, hlist) {
if (umark->state == state) {
hlist_del(&umark->hlist);
- kfree(umark);
+ free(umark);
}
}
}
mutex_lock(&p->user_markers_mutex);
hlist_for_each_entry_safe(umark, pos, n, &p->user_markers,
hlist)
- kfree(umark);
+ free(umark);
INIT_HLIST_HEAD(&p->user_markers);
p->user_markers_sequence++;
mutex_unlock(&p->user_markers_mutex);
#define _GNU_SOURCE
#include <stdio.h>
+#include <stdlib.h>
#include <stdint.h>
#include <signal.h>
#include <sys/types.h>
static inline void *allocate_probes(int count)
{
- struct tp_probes *p = kmalloc(count * sizeof(void *)
- + sizeof(struct tp_probes), GFP_KERNEL);
+ struct tp_probes *p = malloc(count * sizeof(void *)
+ + sizeof(struct tp_probes));
return p == NULL ? NULL : p->probes;
}
struct tp_probes, probes[0]);
//ust// call_rcu_sched(&tp_probes->u.rcu, rcu_free_old_probes);
synchronize_rcu();
- kfree(tp_probes);
+ free(tp_probes);
}
}
* Using kmalloc here to allocate a variable length element. Could
* cause some memory fragmentation if overused.
*/
- e = kmalloc(sizeof(struct tracepoint_entry) + name_len, GFP_KERNEL);
+ e = malloc(sizeof(struct tracepoint_entry) + name_len);
if (!e)
return ERR_PTR(-ENOMEM);
memcpy(&e->name[0], name, name_len);
static inline void remove_tracepoint(struct tracepoint_entry *e)
{
hlist_del(&e->hlist);
- kfree(e);
+ free(e);
}
/*
list_del(&pos->u.list);
//ust// call_rcu_sched(&pos->u.rcu, rcu_free_old_probes);
synchronize_rcu();
- kfree(pos);
+ free(pos);
}
}
//ust// EXPORT_SYMBOL_GPL(tracepoint_probe_update_all);
struct ust_trace *trace = container_of(kref,
struct ust_trace, kref);
ltt_channels_trace_free(trace->channels);
- kfree(trace);
+ free(trace);
}
static inline void prepare_chan_size_num(unsigned int *subbuf_size,
goto traces_error;
}
- new_trace = kzalloc(sizeof(struct ust_trace), GFP_KERNEL);
+ new_trace = zmalloc(sizeof(struct ust_trace));
if (!new_trace) {
ERR("Unable to allocate memory for trace %s", trace_name);
err = -ENOMEM;
return 0;
trace_free:
- kfree(new_trace);
+ free(new_trace);
traces_error:
return err;
}
static void _ltt_trace_free(struct ust_trace *trace)
{
list_del(&trace->list);
- kfree(trace);
+ free(trace);
}
int ltt_trace_set_type(const char *trace_name, const char *trace_type)
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
+#include <stdlib.h>
#include <ust/marker.h>
-#AM_CPPFLAGS = -I$(top_srcdir)/include
+AM_CPPFLAGS = -I$(top_srcdir)/include
noinst_PROGRAMS = prog
prog_SOURCES = prog.c
int main()
{
int i;
- const char teststr[] = "Hello World! 1234567890abc";
- void *ptrs[N_ITER];
for(i=0; i<N_ITER; i++) {
trace_mark(ust, an_event, "%d", i);
trace_mark(ust, another_event, "%s", "Hello, World!");
}
-// ltt_trace_stop("auto");
-// ltt_trace_destroy("auto");
-// sleep(2);
-
return 0;
}
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include <stdlib.h>
#include <assert.h>
#include <byteswap.h>