fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / crypto / proc.c
index 630ba91..dabce06 100644 (file)
@@ -4,6 +4,7 @@
  * Procfs information.
  *
  * Copyright (c) 2002 James Morris <jmorris@intercode.com.au>
+ * Copyright (c) 2005 Herbert Xu <herbert@gondor.apana.org.au>
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License as published by the Free
@@ -11,6 +12,8 @@
  * any later version.
  *
  */
+
+#include <asm/atomic.h>
 #include <linux/init.h>
 #include <linux/crypto.h>
 #include <linux/rwsem.h>
@@ -18,9 +21,6 @@
 #include <linux/seq_file.h>
 #include "internal.h"
 
-extern struct list_head crypto_alg_list;
-extern struct rw_semaphore crypto_alg_sem;
-
 static void *c_start(struct seq_file *m, loff_t *pos)
 {
        struct list_head *v;
@@ -53,7 +53,10 @@ static int c_show(struct seq_file *m, void *p)
        struct crypto_alg *alg = (struct crypto_alg *)p;
        
        seq_printf(m, "name         : %s\n", alg->cra_name);
+       seq_printf(m, "driver       : %s\n", alg->cra_driver_name);
        seq_printf(m, "module       : %s\n", module_name(alg->cra_module));
+       seq_printf(m, "priority     : %d\n", alg->cra_priority);
+       seq_printf(m, "refcnt       : %d\n", atomic_read(&alg->cra_refcnt));
        
        switch (alg->cra_flags & CRYPTO_ALG_TYPE_MASK) {
        case CRYPTO_ALG_TYPE_CIPHER:
@@ -75,7 +78,10 @@ static int c_show(struct seq_file *m, void *p)
                seq_printf(m, "type         : compression\n");
                break;
        default:
-               seq_printf(m, "type         : unknown\n");
+               if (alg->cra_type && alg->cra_type->show)
+                       alg->cra_type->show(m, alg);
+               else
+                       seq_printf(m, "type         : unknown\n");
                break;
        }
 
@@ -110,3 +116,8 @@ void __init crypto_init_proc(void)
        if (proc)
                proc->proc_fops = &proc_crypto_ops;
 }
+
+void __exit crypto_exit_proc(void)
+{
+       remove_proc_entry("crypto", NULL);
+}