* in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see [sun.com URL with a
- * copy of GPLv2].
+ * version 2 along with this program; If not, see
+ * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
RETURN(0);
}
-static struct rw_semaphore ioctl_list_sem;
-static struct list_head ioctl_list;
+static cfs_rw_semaphore_t ioctl_list_sem;
+static cfs_list_t ioctl_list;
int libcfs_register_ioctl(struct libcfs_ioctl_handler *hand)
{
int rc = 0;
- down_write(&ioctl_list_sem);
- if (!list_empty(&hand->item))
+ cfs_down_write(&ioctl_list_sem);
+ if (!cfs_list_empty(&hand->item))
rc = -EBUSY;
else
- list_add_tail(&hand->item, &ioctl_list);
- up_write(&ioctl_list_sem);
+ cfs_list_add_tail(&hand->item, &ioctl_list);
+ cfs_up_write(&ioctl_list_sem);
return rc;
}
{
int rc = 0;
- down_write(&ioctl_list_sem);
- if (list_empty(&hand->item))
+ cfs_down_write(&ioctl_list_sem);
+ if (cfs_list_empty(&hand->item))
rc = -ENOENT;
else
- list_del_init(&hand->item);
- up_write(&ioctl_list_sem);
+ cfs_list_del_init(&hand->item);
+ cfs_up_write(&ioctl_list_sem);
return rc;
}
EXPORT_SYMBOL(libcfs_deregister_ioctl);
-static int libcfs_ioctl(struct cfs_psdev_file *pfile, unsigned long cmd, void *arg)
+static int libcfs_ioctl_int(struct cfs_psdev_file *pfile,unsigned long cmd,
+ void *arg, struct libcfs_ioctl_data *data)
{
- char buf[1024];
int err = -EINVAL;
- struct libcfs_ioctl_data *data;
ENTRY;
- /* 'cmd' and permissions get checked in our arch-specific caller */
-
- if (libcfs_ioctl_getdata(buf, buf + 800, (void *)arg)) {
- CERROR("PORTALS ioctl: data error\n");
- RETURN(-EINVAL);
- }
- data = (struct libcfs_ioctl_data *)buf;
-
switch (cmd) {
case IOC_LIBCFS_CLEAR_DEBUG:
libcfs_debug_clear_buffer();
break;
case IOC_LIBCFS_LWT_SNAPSHOT: {
- cycles_t now;
- int ncpu;
- int total_size;
+ cfs_cycles_t now;
+ int ncpu;
+ int total_size;
err = lwt_snapshot (&now, &ncpu, &total_size,
data->ioc_pbuf1, data->ioc_plen1);
default: {
struct libcfs_ioctl_handler *hand;
err = -EINVAL;
- down_read(&ioctl_list_sem);
- list_for_each_entry(hand, &ioctl_list, item) {
+ cfs_down_read(&ioctl_list_sem);
+ cfs_list_for_each_entry_typed(hand, &ioctl_list,
+ struct libcfs_ioctl_handler, item) {
err = hand->handle_ioctl(cmd, data);
if (err != -EINVAL) {
if (err == 0)
break;
}
}
- up_read(&ioctl_list_sem);
+ cfs_up_read(&ioctl_list_sem);
break;
}
}
RETURN(err);
}
+static int libcfs_ioctl(struct cfs_psdev_file *pfile, unsigned long cmd, void *arg)
+{
+ char *buf;
+ struct libcfs_ioctl_data *data;
+ int err;
+ ENTRY;
+
+ LIBCFS_ALLOC_GFP(buf, 1024, CFS_ALLOC_STD);
+ if (buf == NULL)
+ RETURN(-ENOMEM);
+
+ /* 'cmd' and permissions get checked in our arch-specific caller */
+ if (libcfs_ioctl_getdata(buf, buf + 800, (void *)arg)) {
+ CERROR("PORTALS ioctl: data error\n");
+ GOTO(out, err = -EINVAL);
+ }
+ data = (struct libcfs_ioctl_data *)buf;
+
+ err = libcfs_ioctl_int(pfile, cmd, arg, data);
+
+out:
+ LIBCFS_FREE(buf, 1024);
+ RETURN(err);
+}
+
+
struct cfs_psdev_ops libcfs_psdev_ops = {
libcfs_psdev_open,
libcfs_psdev_release,
MODULE_LICENSE("GPL");
extern cfs_psdev_t libcfs_dev;
-extern struct rw_semaphore tracefile_sem;
-extern struct semaphore trace_thread_sem;
+extern cfs_rw_semaphore_t cfs_tracefile_sem;
+extern cfs_semaphore_t cfs_trace_thread_sem;
extern void libcfs_init_nidstrings(void);
extern int libcfs_arch_init(void);
libcfs_arch_init();
libcfs_init_nidstrings();
- init_rwsem(&tracefile_sem);
- init_mutex(&trace_thread_sem);
- init_rwsem(&ioctl_list_sem);
+ cfs_init_rwsem(&cfs_tracefile_sem);
+ cfs_init_mutex(&cfs_trace_thread_sem);
+ cfs_init_rwsem(&ioctl_list_sem);
CFS_INIT_LIST_HEAD(&ioctl_list);
rc = libcfs_debug_init(5 * 1024 * 1024);
if (rc < 0) {
- printk(KERN_ERR "LustreError: libcfs_debug_init: %d\n", rc);
+ printk(CFS_KERN_ERR "LustreError: libcfs_debug_init: %d\n", rc);
return (rc);
}
remove_proc();
CDEBUG(D_MALLOC, "before Portals cleanup: kmem %d\n",
- atomic_read(&libcfs_kmemory));
+ cfs_atomic_read(&libcfs_kmemory));
rc = cfs_psdev_deregister(&libcfs_dev);
if (rc)
lwt_fini();
#endif
- if (atomic_read(&libcfs_kmemory) != 0)
+ if (cfs_atomic_read(&libcfs_kmemory) != 0)
CERROR("Portals memory leaked: %d bytes\n",
- atomic_read(&libcfs_kmemory));
+ cfs_atomic_read(&libcfs_kmemory));
rc = libcfs_debug_cleanup();
if (rc)
- printk(KERN_ERR "LustreError: libcfs_debug_cleanup: %d\n", rc);
+ printk(CFS_KERN_ERR "LustreError: libcfs_debug_cleanup: %d\n",
+ rc);
+
+ cfs_fini_rwsem(&ioctl_list_sem);
+ cfs_fini_rwsem(&cfs_tracefile_sem);
+
libcfs_arch_cleanup();
}