static void exit_libcfs_module(void) { int rc; remove_proc(); CDEBUG(D_MALLOC, "before Portals cleanup: kmem %d\n", cfs_atomic_read(&libcfs_kmemory)); cfs_wi_shutdown(); rc = cfs_psdev_deregister(&libcfs_dev); if (rc) CERROR("misc_deregister error %d\n", rc); #if LWT_SUPPORT lwt_fini(); #endif if (cfs_atomic_read(&libcfs_kmemory) != 0) CERROR("Portals memory leaked: %d bytes\n", cfs_atomic_read(&libcfs_kmemory)); rc = libcfs_debug_cleanup(); if (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(); }
static void exit_libcfs_module(void) { int rc; remove_proc(); CDEBUG(D_MALLOC, "before Portals cleanup: kmem %d\n", atomic_read(&libcfs_kmemory)); if (cfs_sched_rehash != NULL) { cfs_wi_sched_destroy(cfs_sched_rehash); cfs_sched_rehash = NULL; } cfs_crypto_unregister(); cfs_wi_shutdown(); rc = misc_deregister(&libcfs_dev); if (rc) CERROR("misc_deregister error %d\n", rc); #if LWT_SUPPORT lwt_fini(); #endif cfs_cpu_fini(); if (atomic_read(&libcfs_kmemory) != 0) CERROR("Portals memory leaked: %d bytes\n", atomic_read(&libcfs_kmemory)); rc = libcfs_debug_cleanup(); if (rc) printk(KERN_ERR "LustreError: libcfs_debug_cleanup: %d\n", rc); fini_rwsem(&ioctl_list_sem); fini_rwsem(&cfs_tracefile_sem); libcfs_arch_cleanup(); }
int main(int argc, char **argv) { int rc = 0; rc = libcfs_arch_init(); if (rc < 0) return rc; rc = ptl_initialize(argc, argv); if (rc < 0) goto errorout; Parser_init("ptlctl > ", list); if (argc > 1) { rc = Parser_execarg(argc - 1, &argv[1], list); goto errorout; } Parser_commands(); errorout: libcfs_arch_cleanup(); return rc; }