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> 37 struct _rtdm_mmap_request;
39 DECLARE_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)
57 DECLARE_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)
83 DECLARE_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)
107 DECLARE_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 __assign_str(task_name, task->name);
121 TP_printk(
"task %p(%s)", __entry->task, __get_str(task_name))
124 DECLARE_EVENT_CLASS(event_op,
125 TP_PROTO(
struct rtdm_event *ev),
129 __field(
struct rtdm_event *, ev)
136 TP_printk(
"event=%p", __entry->ev)
139 DECLARE_EVENT_CLASS(sem_op,
140 TP_PROTO(
struct rtdm_sem *sem),
144 __field(
struct rtdm_sem *, sem)
151 TP_printk(
"sem=%p", __entry->sem)
154 DECLARE_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)
169 TRACE_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 __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)
199 TRACE_EVENT(cobalt_device_unregister,
205 __string(device_name, dev->name)
210 __assign_str(device_name, dev->name);
213 TP_printk(
"device %s=%p",
214 __get_str(device_name), __entry->dev)
217 DEFINE_EVENT(fd_event, cobalt_fd_created,
218 TP_PROTO(
struct rtdm_fd *fd,
int ufd),
222 DEFINE_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)
229 DEFINE_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)
236 DEFINE_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)
243 DEFINE_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)
250 DEFINE_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)
257 DEFINE_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)
264 DEFINE_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)
271 DEFINE_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)
278 DEFINE_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)
285 DEFINE_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"}) 310 TRACE_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)
346 DEFINE_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)
353 DEFINE_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)
360 DEFINE_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)
367 DEFINE_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)
374 DEFINE_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)
381 DEFINE_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)
388 DEFINE_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)
395 DEFINE_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)
402 DEFINE_EVENT(task_op, cobalt_driver_task_join,
403 TP_PROTO(
struct xnthread *task),
407 TRACE_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)
425 TRACE_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 __assign_str(task_name, task->name);
441 TP_printk(
"event=%p task=%p(%s)",
442 __entry->ev, __entry->task, __get_str(task_name))
445 DEFINE_EVENT(event_op, cobalt_driver_event_signal,
446 TP_PROTO(
struct rtdm_event *ev),
450 DEFINE_EVENT(event_op, cobalt_driver_event_clear,
451 TP_PROTO(
struct rtdm_event *ev),
455 DEFINE_EVENT(event_op, cobalt_driver_event_pulse,
456 TP_PROTO(
struct rtdm_event *ev),
460 DEFINE_EVENT(event_op, cobalt_driver_event_destroy,
461 TP_PROTO(
struct rtdm_event *ev),
465 TRACE_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)
483 TRACE_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 __assign_str(task_name, task->name);
499 TP_printk(
"sem=%p task=%p(%s)",
500 __entry->sem, __entry->task, __get_str(task_name))
503 DEFINE_EVENT(sem_op, cobalt_driver_sem_up,
504 TP_PROTO(
struct rtdm_sem *sem),
508 DEFINE_EVENT(sem_op, cobalt_driver_sem_destroy,
509 TP_PROTO(
struct rtdm_sem *sem),
513 DEFINE_EVENT(mutex_op, cobalt_driver_mutex_init,
514 TP_PROTO(
struct rtdm_mutex *mutex),
518 DEFINE_EVENT(mutex_op, cobalt_driver_mutex_release,
519 TP_PROTO(
struct rtdm_mutex *mutex),
523 DEFINE_EVENT(mutex_op, cobalt_driver_mutex_destroy,
524 TP_PROTO(
struct rtdm_mutex *mutex),
528 TRACE_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 __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> struct rtdm_profile_info profile_info
Class profile information.
Definition: driver.h:255
int device_flags
Device flags, see Device Flags for details.
Definition: driver.h:260
struct rtdm_driver * driver
Device driver.
Definition: driver.h:340
int class_id
Device class ID, see RTDM_CLASS_xxx.
Definition: driver.h:219
int version
Supported device profile version.
Definition: driver.h:224
#define RTDM_NAMED_DEVICE
If set, the device is addressed via a clear-text name.
Definition: driver.h:83
Device context.
Definition: driver.h:136
RTDM device.
Definition: driver.h:338
#define RTDM_DEVICE_TYPE_MASK
Mask selecting the device type.
Definition: driver.h:90
int subclass_id
Device sub-class, see RTDM_SUBCLASS_xxx definition in the Device Profiles.
Definition: driver.h:222