Whamcloud - gitweb
LU-3963 libcfs: cleanup list operations
[fs/lustre-release.git] / libcfs / libcfs / lwt.c
index 2a33261..39e6743 100644 (file)
@@ -1,6 +1,4 @@
-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
  * GPL HEADER START
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  * Author: Eric Barton <eeb@clusterfs.com>
  */
 
-#ifndef EXPORT_SYMTAB
-# define EXPORT_SYMTAB
-#endif
-
 #define DEBUG_SUBSYSTEM S_LNET
 
 #include <libcfs/libcfs.h>
@@ -50,7 +44,7 @@
 
 #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;
@@ -78,19 +72,19 @@ lwt_lookup_string (int *size, char *knl_ptr,
 
         *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
@@ -103,16 +97,16 @@ lwt_control (int enable, int clear)
         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);
@@ -120,84 +114,80 @@ lwt_control (int enable, int clear)
                 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);
+                       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);
-
-                        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) {
@@ -216,49 +206,46 @@ lwt_init ()
 
                         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);