Revision: 1568 Author: teawater Date: Thu May 9 06:41:59 2013 Log: Fix build issue with Linux kernel 2.6.32-358.el6. Thanks report from Dong Zhu. http://code.google.com/p/kgtp/source/detail?r=1568 Modified: /trunk/UPDATE /trunk/perf_event.c ======================================= --- /trunk/UPDATE Thu May 9 05:47:11 2013 +++ /trunk/UPDATE Thu May 9 06:41:59 2013 @@ -3,6 +3,9 @@ * Fix build issue with Linux kernel 2.6.37. Thanks report from D___linux. +* Fix build issue with Linux kernel 2.6.32-358.el6. + Thanks report from Dong Zhu. + *** 20130508 * http://kgtp.googlecode.com/files/kgtp_20130508.tar.bz2 ======================================= --- /trunk/perf_event.c Thu May 9 05:33:59 2013 +++ /trunk/perf_event.c Thu May 9 06:41:59 2013 @@ -9,7 +9,8 @@ #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)) -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) \ + || (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6,4)) struct ring_buffer { atomic_t refcount; struct rcu_head rcu_head; @@ -262,7 +263,8 @@ return can_add_hw; } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) \ + || (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6,4)) #ifndef CONFIG_PERF_USE_VMALLOC static inline int page_order(struct ring_buffer *rb) { @@ -324,7 +326,8 @@ buf += size; handle->size -= size; if (!handle->size) { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) \ + || (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6,4)) struct ring_buffer *buffer = handle->rb; #elif (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,35)) \ || (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6,1)) @@ -485,7 +488,8 @@ __perf_event__output_id_sample(handle, sample); } -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0)) +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0)) \ + && (RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(6,4)) static void gtp_perf_event_wakeup(struct perf_event *event) { wake_up_all(&event->waitq); @@ -499,18 +503,21 @@ static void perf_output_wakeup(struct perf_output_handle *handle) { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) \ + || (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6,4)) atomic_set(&handle->rb->poll, POLL_IN); #else atomic_set(&handle->buffer->poll, POLL_IN); #endif -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0)) +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0)) \ + && (RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(6,4)) if (handle->nmi) { #endif handle->event->pending_wakeup = 1; irq_work_queue(&handle->event->pending); -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0)) +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0)) \ + && (RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(6,4)) } else gtp_perf_event_wakeup(handle->event); #endif @@ -518,7 +525,8 @@ static void perf_output_put_handle(struct perf_output_handle *handle) { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) \ + || (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6,4)) struct ring_buffer *buffer = handle->rb; #else struct perf_buffer *buffer = handle->buffer; @@ -560,7 +568,8 @@ static void gtp_perf_output_end(struct perf_output_handle *handle) { -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0)) +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0)) \ + && (RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(6,4)) struct perf_event *event = handle->event; struct perf_buffer *buffer = handle->buffer; @@ -579,7 +588,8 @@ rcu_read_unlock(); } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) \ + || (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6,4)) static unsigned long perf_data_size(struct ring_buffer *buffer) #else static unsigned long perf_data_size(struct perf_buffer *buffer) @@ -591,7 +601,8 @@ /* * Output */ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) \ + || (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6,4))static bool perf_output_space(struct ring_buffer *buffer, unsigned long tail,
unsigned long offset, unsigned long head) #else @@ -625,7 +636,8 @@ */ static void perf_output_get_handle(struct perf_output_handle *handle) { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) \ + || (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6,4)) struct ring_buffer *buffer = handle->rb; #else struct perf_buffer *buffer = handle->buffer; @@ -640,7 +652,8 @@ struct perf_event *event, unsigned int size, int nmi, int sample) { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) \ + || (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6,4)) struct ring_buffer *buffer; #else struct perf_buffer *buffer; @@ -661,7 +674,8 @@ if (event->parent) event = event->parent; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) \ + || (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6,4)) buffer = rcu_dereference(event->rb); #else buffer = rcu_dereference(event->buffer); @@ -669,13 +683,15 @@ if (!buffer) goto out; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) \ + || (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6,4)) handle->rb = buffer; #else handle->buffer = buffer; #endif handle->event = event; -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) \ + || (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6,4)) handle->nmi = nmi; handle->sample = sample; #endif