* Author: Eric Barton <eeb@clusterfs.com>
*/
-#ifndef EXPORT_SYMTAB
-# define EXPORT_SYMTAB
-#endif
-
#define DEBUG_SUBSYSTEM S_LNET
#include <libcfs/libcfs.h>
#if !KLWT_SUPPORT
int lwt_enabled;
-lwt_cpu_t lwt_cpus[CFS_NR_CPUS];
+lwt_cpu_t lwt_cpus[NR_CPUS];
#endif
int lwt_pages_per_cpu;
*size = strnlen (knl_ptr, maxsize - 1) + 1;
- if (user_ptr != NULL) {
- if (user_size < 4)
- return (-EINVAL);
+ if (user_ptr != NULL) {
+ if (user_size < 4)
+ return -EINVAL;
- if (cfs_copy_to_user (user_ptr, knl_ptr, *size))
- return (-EFAULT);
+ if (copy_to_user(user_ptr, knl_ptr, *size))
+ return -EFAULT;
- /* Did I truncate the string? */
- if (knl_ptr[*size - 1] != 0)
- cfs_copy_to_user (user_ptr + *size - 4, "...", 4);
- }
+ /* Did I truncate the string? */
+ if (knl_ptr[*size - 1] != 0)
+ copy_to_user(user_ptr + *size - 4, "...", 4);
+ }
- return (0);
+ return 0;
}
int
if (!cfs_capable(CFS_CAP_SYS_ADMIN))
return (-EPERM);
- if (!enable) {
- LWT_EVENT(0,0,0,0);
- lwt_enabled = 0;
- cfs_mb();
- /* give people some time to stop adding traces */
- cfs_schedule_timeout(10);
- }
+ if (!enable) {
+ LWT_EVENT(0,0,0,0);
+ lwt_enabled = 0;
+ smp_mb();
+ /* give people some time to stop adding traces */
+ schedule_timeout(10);
+ }
- for (i = 0; i < cfs_num_online_cpus(); i++) {
- p = lwt_cpus[i].lwtc_current_page;
+ for (i = 0; i < num_online_cpus(); i++) {
+ p = lwt_cpus[i].lwtc_current_page;
if (p == NULL)
return (-ENODATA);
if (!clear)
continue;
- for (j = 0; j < lwt_pages_per_cpu; j++) {
- memset (p->lwtp_events, 0, CFS_PAGE_SIZE);
+ for (j = 0; j < lwt_pages_per_cpu; j++) {
+ memset(p->lwtp_events, 0, PAGE_CACHE_SIZE);
- p = cfs_list_entry (p->lwtp_list.next,
- lwt_page_t, lwtp_list);
- }
- }
+ p = list_entry(p->lwtp_list.next,
+ lwt_page_t, lwtp_list);
+ }
+ }
- if (enable) {
- lwt_enabled = 1;
- cfs_mb();
- LWT_EVENT(0,0,0,0);
- }
+ if (enable) {
+ lwt_enabled = 1;
+ smp_mb();
+ LWT_EVENT(0,0,0,0);
+ }
- return (0);
+ return (0);
}
int
-lwt_snapshot (cfs_cycles_t *now, int *ncpu, int *total_size,
- void *user_ptr, int user_size)
+lwt_snapshot(cfs_cycles_t *now, int *ncpu, int *total_size,
+ void *user_ptr, int user_size)
{
- const int events_per_page = CFS_PAGE_SIZE / sizeof(lwt_event_t);
- const int bytes_per_page = events_per_page * sizeof(lwt_event_t);
- lwt_page_t *p;
- int i;
- int j;
+ const int events_per_page = PAGE_CACHE_SIZE / sizeof(lwt_event_t);
+ const int bytes_per_page = events_per_page * sizeof(lwt_event_t);
+ lwt_page_t *p;
+ int i;
+ int j;
- if (!cfs_capable(CFS_CAP_SYS_ADMIN))
- return (-EPERM);
+ if (!cfs_capable(CFS_CAP_SYS_ADMIN))
+ return (-EPERM);
- *ncpu = cfs_num_online_cpus();
- *total_size = cfs_num_online_cpus() * lwt_pages_per_cpu *
- bytes_per_page;
- *now = get_cycles();
+ *ncpu = num_online_cpus();
+ *total_size = num_online_cpus() * lwt_pages_per_cpu * bytes_per_page;
+ *now = get_cycles();
- if (user_ptr == NULL)
- return (0);
+ if (user_ptr == NULL)
+ return (0);
- for (i = 0; i < cfs_num_online_cpus(); i++) {
- p = lwt_cpus[i].lwtc_current_page;
+ for (i = 0; i < num_online_cpus(); i++) {
+ p = lwt_cpus[i].lwtc_current_page;
if (p == NULL)
- return (-ENODATA);
-
- for (j = 0; j < lwt_pages_per_cpu; j++) {
- if (cfs_copy_to_user(user_ptr, p->lwtp_events,
- bytes_per_page))
- return (-EFAULT);
+ return -ENODATA;
- user_ptr = ((char *)user_ptr) + bytes_per_page;
- p = cfs_list_entry(p->lwtp_list.next,
- lwt_page_t, lwtp_list);
- }
- }
-
- return (0);
+ for (j = 0; j < lwt_pages_per_cpu; j++) {
+ if (copy_to_user(user_ptr, p->lwtp_events,
+ bytes_per_page))
+ return -EFAULT;
+
+ user_ptr = ((char *)user_ptr) + bytes_per_page;
+ p = list_entry(p->lwtp_list.next,
+ lwt_page_t, lwtp_list);
+ }
+ }
+ return (0);
}
-int
-lwt_init ()
+int lwt_init ()
{
int i;
- int j;
+ int j;
- for (i = 0; i < cfs_num_online_cpus(); i++)
- if (lwt_cpus[i].lwtc_current_page != NULL)
- return (-EALREADY);
+ for (i = 0; i < num_online_cpus(); i++)
+ if (lwt_cpus[i].lwtc_current_page != NULL)
+ return (-EALREADY);
- LASSERT (!lwt_enabled);
+ LASSERT (!lwt_enabled);
/* NULL pointers, zero scalars */
memset (lwt_cpus, 0, sizeof (lwt_cpus));
- lwt_pages_per_cpu =
- LWT_MEMORY / (cfs_num_online_cpus() * CFS_PAGE_SIZE);
+ lwt_pages_per_cpu = LWT_MEMORY / (num_online_cpus() * PAGE_CACHE_SIZE);
- for (i = 0; i < cfs_num_online_cpus(); i++)
+ for (i = 0; i < num_online_cpus(); i++)
for (j = 0; j < lwt_pages_per_cpu; j++) {
- struct page *page = alloc_page (GFP_KERNEL);
+ struct page *page = alloc_page(GFP_KERNEL);
lwt_page_t *lwtp;
if (page == NULL) {
lwtp->lwtp_page = page;
lwtp->lwtp_events = page_address(page);
- memset (lwtp->lwtp_events, 0, CFS_PAGE_SIZE);
+ memset(lwtp->lwtp_events, 0, PAGE_CACHE_SIZE);
if (j == 0) {
- CFS_INIT_LIST_HEAD (&lwtp->lwtp_list);
+ INIT_LIST_HEAD (&lwtp->lwtp_list);
lwt_cpus[i].lwtc_current_page = lwtp;
} else {
- cfs_list_add (&lwtp->lwtp_list,
- &lwt_cpus[i].lwtc_current_page->lwtp_list);
+ list_add(&lwtp->lwtp_list,
+ &lwt_cpus[i].lwtc_current_page->lwtp_list);
}
}
- lwt_enabled = 1;
- cfs_mb();
+ lwt_enabled = 1;
+ smp_mb();
- LWT_EVENT(0,0,0,0);
+ LWT_EVENT(0,0,0,0);
- return (0);
+ return (0);
}
-void
-lwt_fini ()
+void lwt_fini ()
{
- int i;
-
- lwt_control(0, 0);
-
- for (i = 0; i < cfs_num_online_cpus(); i++)
- while (lwt_cpus[i].lwtc_current_page != NULL) {
- lwt_page_t *lwtp = lwt_cpus[i].lwtc_current_page;
-
- if (cfs_list_empty (&lwtp->lwtp_list)) {
- lwt_cpus[i].lwtc_current_page = NULL;
- } else {
- lwt_cpus[i].lwtc_current_page =
- cfs_list_entry (lwtp->lwtp_list.next,
- lwt_page_t, lwtp_list);
-
- cfs_list_del (&lwtp->lwtp_list);
- }
-
- __free_page (lwtp->lwtp_page);
- LIBCFS_FREE (lwtp, sizeof (*lwtp));
- }
+ int i;
+
+ lwt_control(0, 0);
+
+ for (i = 0; i < num_online_cpus(); i++)
+ while (lwt_cpus[i].lwtc_current_page != NULL) {
+ lwt_page_t *lwtp = lwt_cpus[i].lwtc_current_page;
+
+ if (list_empty (&lwtp->lwtp_list)) {
+ lwt_cpus[i].lwtc_current_page = NULL;
+ } else {
+ lwt_cpus[i].lwtc_current_page =
+ list_entry(lwtp->lwtp_list.next,
+ lwt_page_t, lwtp_list);
+ list_del (&lwtp->lwtp_list);
+ }
+ __free_page (lwtp->lwtp_page);
+ LIBCFS_FREE (lwtp, sizeof (*lwtp));
+ }
}
EXPORT_SYMBOL(lwt_enabled);