Whamcloud - gitweb
LU-4423 libcfs: remove IS_PO2 and __is_po2
[fs/lustre-release.git] / libcfs / libcfs / prng.c
index b55b0bf..0393174 100644 (file)
  *
  * You should have received a copy of the GNU General Public License
  * 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
- * have any questions.
+ * http://www.gnu.org/licenses/gpl-2.0.html
  *
  * GPL HEADER END
  */
@@ -39,6 +35,7 @@
  * algorithm recommended by Marsaglia
 */
 
+#include <linux/random.h>
 #include <libcfs/libcfs.h>
 
 /*
@@ -81,7 +78,7 @@ unsigned int cfs_rand(void)
 
         return ((seed_x << 16) + (seed_y & 65535));
 }
-CFS_EXPORT_SYMBOL(cfs_rand);
+EXPORT_SYMBOL(cfs_rand);
 
 /**
  * cfs_srand - sets the inital seed
@@ -98,7 +95,7 @@ void cfs_srand(unsigned int seed1, unsigned int seed2)
         if (seed2)
                 seed_y = seed2;
 }
-CFS_EXPORT_SYMBOL(cfs_srand);
+EXPORT_SYMBOL(cfs_srand);
 
 /**
  * cfs_get_random_bytes - generate a bunch of random numbers
@@ -109,31 +106,31 @@ CFS_EXPORT_SYMBOL(cfs_srand);
  */
 void cfs_get_random_bytes(void *buf, int size)
 {
-        int *p = buf;
-        int rem, tmp;
+       int *p = buf;
+       int rem, tmp;
 
-        LASSERT(size >= 0);
+       LASSERT(size >= 0);
 
-        rem = min((int)((unsigned long)buf & (sizeof(int) - 1)), size);
-        if (rem) {
-                cfs_get_random_bytes_prim(&tmp, sizeof(tmp));
-                tmp ^= cfs_rand();
-                memcpy(buf, &tmp, rem);
-                p = buf + rem;
-                size -= rem;
-        }
+       rem = min((int)((unsigned long)buf & (sizeof(int) - 1)), size);
+       if (rem) {
+               get_random_bytes(&tmp, sizeof(tmp));
+               tmp ^= cfs_rand();
+               memcpy(buf, &tmp, rem);
+               p = buf + rem;
+               size -= rem;
+       }
 
-        while (size >= sizeof(int)) {
-                cfs_get_random_bytes_prim(&tmp, sizeof(tmp));
-                *p = cfs_rand() ^ tmp;
-                size -= sizeof(int);
-                p++;
-        }
-        buf = p;
-        if (size) {
-                cfs_get_random_bytes_prim(&tmp, sizeof(tmp));
-                tmp ^= cfs_rand();
-                memcpy(buf, &tmp, size);
-        }
+       while (size >= sizeof(int)) {
+               get_random_bytes(&tmp, sizeof(tmp));
+               *p = cfs_rand() ^ tmp;
+               size -= sizeof(int);
+               p++;
+       }
+       buf = p;
+       if (size) {
+               get_random_bytes(&tmp, sizeof(tmp));
+               tmp ^= cfs_rand();
+               memcpy(buf, &tmp, size);
+       }
 }
-CFS_EXPORT_SYMBOL(cfs_get_random_bytes);
+EXPORT_SYMBOL(cfs_get_random_bytes);