X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=libcfs%2Flibcfs%2Fprng.c;h=03931745c9003b2e04bb9b66bb14c0adb001755b;hb=a4ac52a7d08540802f899b115c74f7b9cdd0c5d7;hp=b55b0bfc4bc0a8c71c44d20c640b5a52bc9001cb;hpb=e2af7fb3c91dfb13d34d8e1b2f2df8c09621f768;p=fs%2Flustre-release.git diff --git a/libcfs/libcfs/prng.c b/libcfs/libcfs/prng.c index b55b0bf..0393174 100644 --- a/libcfs/libcfs/prng.c +++ b/libcfs/libcfs/prng.c @@ -15,11 +15,7 @@ * * 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 #include /* @@ -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);