This file is indexed.

/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