PAPI  5.0.1.0
sys_perf_event_open.c
Go to the documentation of this file.
00001 #include <stdio.h>
00002 #include <unistd.h>
00003 #include <string.h>
00004 #include <errno.h>
00005 
00006 #include PEINCLUDE
00007 
00008 #include "papi_debug.h" /* SUBDBG */
00009 
00010 #include <asm/unistd.h>
00011 
00012 /* In case headers aren't new enough to have __NR_perf_event_open */
00013 #ifndef __NR_perf_event_open
00014 
00015 #ifdef __powerpc__
00016 #define __NR_perf_event_open    319
00017 #elif defined(__x86_64__)
00018 #define __NR_perf_event_open    298
00019 #elif defined(__i386__)
00020 #define __NR_perf_event_open    336
00021 #elif defined(__arm__)          366+0x900000
00022 #define __NR_perf_event_open    
00023 #endif
00024 
00025 #endif
00026 
00027 long
00028 sys_perf_event_open( struct perf_event_attr *hw_event, pid_t pid, int cpu,
00029                        int group_fd, unsigned long flags )
00030 {
00031     int ret;
00032 
00033    SUBDBG("sys_perf_event_open(%p,%d,%d,%d,%lx\n",hw_event,pid,cpu,group_fd,flags);
00034    SUBDBG("   type: %d\n",hw_event->type);
00035    SUBDBG("   size: %d\n",hw_event->size);
00036    SUBDBG("   config: %"PRIx64" (%"PRIu64")\n",hw_event->config,
00037       hw_event->config);
00038    SUBDBG("   sample_period: %"PRIu64"\n",hw_event->sample_period);
00039    SUBDBG("   sample_type: %"PRIu64"\n",hw_event->sample_type);
00040    SUBDBG("   read_format: %"PRIu64"\n",hw_event->read_format);
00041    SUBDBG("   disabled: %d\n",hw_event->disabled);
00042    SUBDBG("   inherit: %d\n",hw_event->inherit);
00043    SUBDBG("   pinned: %d\n",hw_event->pinned);
00044    SUBDBG("   exclusive: %d\n",hw_event->exclusive);
00045    SUBDBG("   exclude_user: %d\n",hw_event->exclude_user);
00046    SUBDBG("   exclude_kernel: %d\n",hw_event->exclude_kernel);
00047    SUBDBG("   exclude_hv: %d\n",hw_event->exclude_hv);
00048    SUBDBG("   exclude_idle: %d\n",hw_event->exclude_idle);   
00049    SUBDBG("   mmap: %d\n",hw_event->mmap);   
00050    SUBDBG("   comm: %d\n",hw_event->comm);   
00051    SUBDBG("   freq: %d\n",hw_event->freq);   
00052    SUBDBG("   inherit_stat: %d\n",hw_event->inherit_stat);   
00053    SUBDBG("   enable_on_exec: %d\n",hw_event->enable_on_exec);   
00054    SUBDBG("   task: %d\n",hw_event->task);   
00055    SUBDBG("   watermark: %d\n",hw_event->watermark);   
00056    
00057    
00058     ret =
00059         syscall( __NR_perf_event_open, hw_event, pid, cpu, group_fd, flags );
00060 #if defined(__x86_64__) || defined(__i386__)
00061     if ( ret < 0 && ret > -4096 ) {
00062         errno = -ret;
00063         ret = -1;
00064     }
00065 #endif
00066     SUBDBG("Returned %d %d %s\n",ret,
00067            ret<0?errno:0,
00068            ret<0?strerror(errno):" ");
00069     return ret;
00070 }
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines