/usr/include/ufo-0/ufo/ufo-profiler.h is in libufo-dev 0.13.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | /*
* Copyright (C) 2011-2013 Karlsruhe Institute of Technology
*
* This file is part of Ufo.
*
* This library is free software: you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation, either
* version 3 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __UFO_PROFILER_H
#define __UFO_PROFILER_H
#if !defined (__UFO_H_INSIDE__) && !defined (UFO_COMPILATION)
#error "Only <ufo/ufo.h> can be included directly."
#endif
#include <glib-object.h>
G_BEGIN_DECLS
#define UFO_TYPE_PROFILER (ufo_profiler_get_type())
#define UFO_PROFILER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), UFO_TYPE_PROFILER, UfoProfiler))
#define UFO_IS_PROFILER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), UFO_TYPE_PROFILER))
#define UFO_PROFILER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), UFO_TYPE_PROFILER, UfoProfilerClass))
#define UFO_IS_PROFILER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), UFO_TYPE_PROFILER))
#define UFO_PROFILER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), UFO_TYPE_PROFILER, UfoProfilerClass))
typedef struct _UfoProfiler UfoProfiler;
typedef struct _UfoProfilerClass UfoProfilerClass;
typedef struct _UfoProfilerPrivate UfoProfilerPrivate;
/**
* UfoProfiler:
*
* The #UfoProfiler collects and records OpenCL events and stores them in a
* convenient format on disk or prints summaries on screen.
*/
struct _UfoProfiler {
/*< private >*/
GObject parent_instance;
UfoProfilerPrivate *priv;
};
/**
* UfoProfilerFunc:
* @kernel: Kernel name
* @queue: OpenCL command queue
* @queued: Queuing timestamp in ns
* @submitted: Submit timestamp in ns
* @start: Start timestamp in ns
* @end: End timestamp in ns
* @user_data: User data passed to ufo_profiler_foreach().
*
* Specifies the type of functions passed to ufo_profiler_foreach().
*/
typedef void (*UfoProfilerFunc) (const gchar *kernel,
gconstpointer queue,
gulong queued,
gulong submitted,
gulong start,
gulong end,
gpointer user_data);
/**
* UfoProfilerClass:
*
* #UfoProfiler class
*/
struct _UfoProfilerClass {
/*< private >*/
GObjectClass parent_class;
};
/**
* UfoTraceEventType:
* @UFO_TRACE_EVENT_PROCESS: A process event
* @UFO_TRACE_EVENT_GENERATE: A generate event
* @UFO_TRACE_EVENT_BEGIN: Beginning of an event
* @UFO_TRACE_EVENT_END: End of an event
*/
typedef enum {
UFO_TRACE_EVENT_PROCESS = 1 << 0,
UFO_TRACE_EVENT_GENERATE = 1 << 1,
UFO_TRACE_EVENT_BEGIN = 1 << 2,
UFO_TRACE_EVENT_END = 1 << 3
} UfoTraceEventType;
#define UFO_TRACE_EVENT_TYPE_MASK (UFO_TRACE_EVENT_PROCESS | UFO_TRACE_EVENT_GENERATE)
#define UFO_TRACE_EVENT_TIME_MASK (UFO_TRACE_EVENT_BEGIN | UFO_TRACE_EVENT_END)
/**
* UfoTraceEvent:
* @type: Type of the event
* @thread_id: ID of thread in which the event was issued
* @timestamp: Arbitrary timestamp of the event
*/
typedef struct {
UfoTraceEventType type;
gpointer thread_id;
gdouble timestamp;
} UfoTraceEvent;
typedef enum {
UFO_PROFILER_TIMER_IO = 0,
UFO_PROFILER_TIMER_CPU,
UFO_PROFILER_TIMER_GPU,
UFO_PROFILER_TIMER_FETCH,
UFO_PROFILER_TIMER_RELEASE,
UFO_PROFILER_TIMER_LAST
} UfoProfilerTimer;
UfoProfiler *ufo_profiler_new (void);
void ufo_profiler_call (UfoProfiler *profiler,
gpointer command_queue,
gpointer kernel,
guint work_dim,
const gsize *global_work_size,
const gsize *local_work_size);
void ufo_profiler_register_event
(UfoProfiler *profiler,
gpointer command_queue,
gpointer kernel,
gpointer event);
void ufo_profiler_foreach (UfoProfiler *profiler,
UfoProfilerFunc func,
gpointer user_data);
void ufo_profiler_start (UfoProfiler *profiler,
UfoProfilerTimer timer);
void ufo_profiler_stop (UfoProfiler *profiler,
UfoProfilerTimer timer);
void ufo_profiler_trace_event (UfoProfiler *profiler,
UfoTraceEventType type);
void ufo_profiler_enable_tracing
(UfoProfiler *profiler,
gboolean enable);
GList *ufo_profiler_get_trace_events
(UfoProfiler *profiler);
gdouble ufo_profiler_elapsed (UfoProfiler *profiler,
UfoProfilerTimer timer);
GType ufo_profiler_get_type (void);
G_END_DECLS
#endif
|