21#define TRACE_SYSTEM cobalt_rtdm
23#if !defined(_TRACE_COBALT_RTDM_H) || defined(TRACE_HEADER_MULTI_READ)
24#define _TRACE_COBALT_RTDM_H
26#include <linux/tracepoint.h>
27#include <linux/mman.h>
28#include <linux/sched.h>
37struct _rtdm_mmap_request;
39DECLARE_EVENT_CLASS(fd_event,
40 TP_PROTO(
struct rtdm_fd *fd,
int ufd),
49 __entry->dev = rtdm_fd_to_context(fd)->device;
53 TP_printk(
"device=%p fd=%d",
54 __entry->dev, __entry->ufd)
57DECLARE_EVENT_CLASS(fd_request,
58 TP_PROTO(
struct task_struct *task,
59 struct rtdm_fd *fd,
int ufd,
unsigned long arg),
60 TP_ARGS(task, fd, ufd, arg),
63 __array(
char, comm, TASK_COMM_LEN)
67 __field(
unsigned long, arg)
71 memcpy(__entry->comm, task->comm, TASK_COMM_LEN);
72 __entry->pid = task_pid_nr(task);
73 __entry->dev = rtdm_fd_to_context(fd)->device;
78 TP_printk(
"device=%p fd=%d arg=%#lx pid=%d comm=%s",
79 __entry->dev, __entry->ufd, __entry->arg,
80 __entry->pid, __entry->comm)
83DECLARE_EVENT_CLASS(fd_request_status,
84 TP_PROTO(
struct task_struct *task,
85 struct rtdm_fd *fd,
int ufd,
int status),
86 TP_ARGS(task, fd, ufd, status),
89 __array(
char, comm, TASK_COMM_LEN)
96 memcpy(__entry->comm, task->comm, TASK_COMM_LEN);
97 __entry->pid = task_pid_nr(task);
99 !IS_ERR(fd) ? rtdm_fd_to_context(fd)->device : NULL;
103 TP_printk(
"device=%p fd=%d pid=%d comm=%s",
104 __entry->dev, __entry->ufd, __entry->pid, __entry->comm)
107DECLARE_EVENT_CLASS(task_op,
108 TP_PROTO(
struct xnthread *task),
112 __field(
struct xnthread *, task)
113 __string(task_name, task->name)
117 __entry->task = task;
118 __wrap_assign_str(task_name, task->name);
121 TP_printk(
"task %p(%s)", __entry->task, __get_str(task_name))
124DECLARE_EVENT_CLASS(event_op,
125 TP_PROTO(
struct rtdm_event *ev),
129 __field(
struct rtdm_event *, ev)
136 TP_printk(
"event=%p", __entry->ev)
139DECLARE_EVENT_CLASS(sem_op,
140 TP_PROTO(
struct rtdm_sem *sem),
144 __field(
struct rtdm_sem *, sem)
151 TP_printk(
"sem=%p", __entry->sem)
154DECLARE_EVENT_CLASS(mutex_op,
155 TP_PROTO(
struct rtdm_mutex *mutex),
159 __field(
struct rtdm_mutex *, mutex)
163 __entry->mutex = mutex;
166 TP_printk(
"mutex=%p", __entry->mutex)
169TRACE_EVENT(cobalt_device_register,
175 __string(device_name, dev->name)
177 __field(
int, class_id)
178 __field(
int, subclass_id)
179 __field(
int, profile_version)
184 __wrap_assign_str(device_name, dev->name);
191 TP_printk(
"%s device %s=%p flags=0x%x, class=%d.%d profile=%d",
194 __get_str(device_name), __entry->dev,
195 __entry->flags, __entry->class_id, __entry->subclass_id,
196 __entry->profile_version)
199TRACE_EVENT(cobalt_device_unregister,
205 __string(device_name, dev->name)
210 __wrap_assign_str(device_name, dev->name);
213 TP_printk(
"device %s=%p",
214 __get_str(device_name), __entry->dev)
217DEFINE_EVENT(fd_event, cobalt_fd_created,
218 TP_PROTO(
struct rtdm_fd *fd,
int ufd),
222DEFINE_EVENT(fd_request, cobalt_fd_open,
223 TP_PROTO(
struct task_struct *task,
224 struct rtdm_fd *fd,
int ufd,
225 unsigned long oflags),
226 TP_ARGS(task, fd, ufd, oflags)
229DEFINE_EVENT(fd_request, cobalt_fd_close,
230 TP_PROTO(
struct task_struct *task,
231 struct rtdm_fd *fd,
int ufd,
232 unsigned long lock_count),
233 TP_ARGS(task, fd, ufd, lock_count)
236DEFINE_EVENT(fd_request, cobalt_fd_socket,
237 TP_PROTO(
struct task_struct *task,
238 struct rtdm_fd *fd,
int ufd,
239 unsigned long protocol_family),
240 TP_ARGS(task, fd, ufd, protocol_family)
243DEFINE_EVENT(fd_request, cobalt_fd_read,
244 TP_PROTO(
struct task_struct *task,
245 struct rtdm_fd *fd,
int ufd,
247 TP_ARGS(task, fd, ufd, len)
250DEFINE_EVENT(fd_request, cobalt_fd_write,
251 TP_PROTO(
struct task_struct *task,
252 struct rtdm_fd *fd,
int ufd,
254 TP_ARGS(task, fd, ufd, len)
257DEFINE_EVENT(fd_request, cobalt_fd_ioctl,
258 TP_PROTO(
struct task_struct *task,
259 struct rtdm_fd *fd,
int ufd,
260 unsigned long request),
261 TP_ARGS(task, fd, ufd, request)
264DEFINE_EVENT(fd_request, cobalt_fd_sendmsg,
265 TP_PROTO(
struct task_struct *task,
266 struct rtdm_fd *fd,
int ufd,
267 unsigned long flags),
268 TP_ARGS(task, fd, ufd, flags)
271DEFINE_EVENT(fd_request, cobalt_fd_sendmmsg,
272 TP_PROTO(
struct task_struct *task,
273 struct rtdm_fd *fd,
int ufd,
274 unsigned long flags),
275 TP_ARGS(task, fd, ufd, flags)
278DEFINE_EVENT(fd_request, cobalt_fd_recvmsg,
279 TP_PROTO(
struct task_struct *task,
280 struct rtdm_fd *fd,
int ufd,
281 unsigned long flags),
282 TP_ARGS(task, fd, ufd, flags)
285DEFINE_EVENT(fd_request, cobalt_fd_recvmmsg,
286 TP_PROTO(
struct task_struct *task,
287 struct rtdm_fd *fd,
int ufd,
288 unsigned long flags),
289 TP_ARGS(task, fd, ufd, flags)
292#define cobalt_print_protbits(__prot) \
293 __print_flags(__prot, "|", \
294 {PROT_EXEC, "exec"}, \
295 {PROT_READ, "read"}, \
296 {PROT_WRITE, "write"})
298#define cobalt_print_mapbits(__flags) \
299 __print_flags(__flags, "|", \
300 {MAP_SHARED, "shared"}, \
301 {MAP_PRIVATE, "private"}, \
302 {MAP_ANONYMOUS, "anon"}, \
303 {MAP_FIXED, "fixed"}, \
304 {MAP_HUGETLB, "huge"}, \
305 {MAP_NONBLOCK, "nonblock"}, \
306 {MAP_NORESERVE, "noreserve"}, \
307 {MAP_POPULATE, "populate"}, \
308 {MAP_UNINITIALIZED, "uninit"})
310TRACE_EVENT(cobalt_fd_mmap,
311 TP_PROTO(
struct task_struct *task,
312 struct rtdm_fd *fd,
int ufd,
struct _rtdm_mmap_request *rma),
313 TP_ARGS(task, fd, ufd, rma),
316 __array(
char, comm, TASK_COMM_LEN)
320 __field(
size_t, length)
321 __field(off_t, offset)
327 memcpy(__entry->comm, task->comm, TASK_COMM_LEN);
328 __entry->pid = task_pid_nr(task);
329 __entry->dev = rtdm_fd_to_context(fd)->device;
331 __entry->length = rma->length;
332 __entry->offset = rma->offset;
333 __entry->prot = rma->prot;
334 __entry->flags = rma->flags;
337 TP_printk(
"device=%p fd=%d area={ len:%zu, off:%Lu }"
338 " prot=%#x(%s) flags=%#x(%s) pid=%d comm=%s",
339 __entry->dev, __entry->ufd, __entry->length,
340 (
unsigned long long)__entry->offset,
341 __entry->prot, cobalt_print_protbits(__entry->prot),
342 __entry->flags, cobalt_print_mapbits(__entry->flags),
343 __entry->pid, __entry->comm)
346DEFINE_EVENT(fd_request_status, cobalt_fd_ioctl_status,
347 TP_PROTO(
struct task_struct *task,
348 struct rtdm_fd *fd,
int ufd,
350 TP_ARGS(task, fd, ufd, status)
353DEFINE_EVENT(fd_request_status, cobalt_fd_read_status,
354 TP_PROTO(
struct task_struct *task,
355 struct rtdm_fd *fd,
int ufd,
357 TP_ARGS(task, fd, ufd, status)
360DEFINE_EVENT(fd_request_status, cobalt_fd_write_status,
361 TP_PROTO(
struct task_struct *task,
362 struct rtdm_fd *fd,
int ufd,
364 TP_ARGS(task, fd, ufd, status)
367DEFINE_EVENT(fd_request_status, cobalt_fd_recvmsg_status,
368 TP_PROTO(
struct task_struct *task,
369 struct rtdm_fd *fd,
int ufd,
371 TP_ARGS(task, fd, ufd, status)
374DEFINE_EVENT(fd_request_status, cobalt_fd_recvmmsg_status,
375 TP_PROTO(
struct task_struct *task,
376 struct rtdm_fd *fd,
int ufd,
378 TP_ARGS(task, fd, ufd, status)
381DEFINE_EVENT(fd_request_status, cobalt_fd_sendmsg_status,
382 TP_PROTO(
struct task_struct *task,
383 struct rtdm_fd *fd,
int ufd,
385 TP_ARGS(task, fd, ufd, status)
388DEFINE_EVENT(fd_request_status, cobalt_fd_sendmmsg_status,
389 TP_PROTO(
struct task_struct *task,
390 struct rtdm_fd *fd,
int ufd,
392 TP_ARGS(task, fd, ufd, status)
395DEFINE_EVENT(fd_request_status, cobalt_fd_mmap_status,
396 TP_PROTO(
struct task_struct *task,
397 struct rtdm_fd *fd,
int ufd,
399 TP_ARGS(task, fd, ufd, status)
402DEFINE_EVENT(task_op, cobalt_driver_task_join,
403 TP_PROTO(
struct xnthread *task),
407TRACE_EVENT(cobalt_driver_event_init,
408 TP_PROTO(
struct rtdm_event *ev,
unsigned long pending),
409 TP_ARGS(ev, pending),
412 __field(
struct rtdm_event *, ev)
413 __field(
unsigned long, pending)
418 __entry->pending = pending;
421 TP_printk(
"event=%p pending=%#lx",
422 __entry->ev, __entry->pending)
425TRACE_EVENT(cobalt_driver_event_wait,
426 TP_PROTO(
struct rtdm_event *ev,
struct xnthread *task),
430 __field(
struct xnthread *, task)
431 __string(task_name, task->name)
432 __field(
struct rtdm_event *, ev)
436 __entry->task = task;
437 __wrap_assign_str(task_name, task->name);
441 TP_printk(
"event=%p task=%p(%s)",
442 __entry->ev, __entry->task, __get_str(task_name))
445DEFINE_EVENT(event_op, cobalt_driver_event_signal,
446 TP_PROTO(
struct rtdm_event *ev),
450DEFINE_EVENT(event_op, cobalt_driver_event_clear,
451 TP_PROTO(
struct rtdm_event *ev),
455DEFINE_EVENT(event_op, cobalt_driver_event_pulse,
456 TP_PROTO(
struct rtdm_event *ev),
460DEFINE_EVENT(event_op, cobalt_driver_event_destroy,
461 TP_PROTO(
struct rtdm_event *ev),
465TRACE_EVENT(cobalt_driver_sem_init,
466 TP_PROTO(
struct rtdm_sem *sem,
unsigned long value),
470 __field(
struct rtdm_sem *, sem)
471 __field(
unsigned long, value)
476 __entry->value = value;
479 TP_printk(
"sem=%p value=%lu",
480 __entry->sem, __entry->value)
483TRACE_EVENT(cobalt_driver_sem_wait,
484 TP_PROTO(
struct rtdm_sem *sem,
struct xnthread *task),
488 __field(
struct xnthread *, task)
489 __string(task_name, task->name)
490 __field(
struct rtdm_sem *, sem)
494 __entry->task = task;
495 __wrap_assign_str(task_name, task->name);
499 TP_printk(
"sem=%p task=%p(%s)",
500 __entry->sem, __entry->task, __get_str(task_name))
503DEFINE_EVENT(sem_op, cobalt_driver_sem_up,
504 TP_PROTO(
struct rtdm_sem *sem),
508DEFINE_EVENT(sem_op, cobalt_driver_sem_destroy,
509 TP_PROTO(
struct rtdm_sem *sem),
513DEFINE_EVENT(mutex_op, cobalt_driver_mutex_init,
514 TP_PROTO(
struct rtdm_mutex *mutex),
518DEFINE_EVENT(mutex_op, cobalt_driver_mutex_release,
519 TP_PROTO(
struct rtdm_mutex *mutex),
523DEFINE_EVENT(mutex_op, cobalt_driver_mutex_destroy,
524 TP_PROTO(
struct rtdm_mutex *mutex),
528TRACE_EVENT(cobalt_driver_mutex_wait,
529 TP_PROTO(
struct rtdm_mutex *mutex,
struct xnthread *task),
530 TP_ARGS(mutex, task),
533 __field(
struct xnthread *, task)
534 __string(task_name, task->name)
535 __field(
struct rtdm_mutex *, mutex)
539 __entry->task = task;
540 __wrap_assign_str(task_name, task->name);
541 __entry->mutex = mutex;
544 TP_printk(
"mutex=%p task=%p(%s)",
545 __entry->mutex, __entry->task, __get_str(task_name))
551#undef TRACE_INCLUDE_PATH
552#undef TRACE_INCLUDE_FILE
553#define TRACE_INCLUDE_FILE cobalt-rtdm
554#include <trace/define_trace.h>
#define RTDM_NAMED_DEVICE
If set, the device is addressed via a clear-text name.
Definition driver.h:85
#define RTDM_DEVICE_TYPE_MASK
Mask selecting the device type.
Definition driver.h:92
Device context.
Definition driver.h:138
RTDM device.
Definition driver.h:340
struct rtdm_driver * driver
Device driver.
Definition driver.h:342
int device_flags
Device flags, see Device Flags for details .
Definition driver.h:262
struct rtdm_profile_info profile_info
Class profile information.
Definition driver.h:257
int version
Supported device profile version.
Definition driver.h:226
int subclass_id
Device sub-class, see RTDM_SUBCLASS_xxx definition in the Device Profiles.
Definition driver.h:224
int class_id
Device class ID, see RTDM_CLASS_xxx.
Definition driver.h:221