bzero.c
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:2k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2000 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. /*  File   : bzero.c
  14.     Author : Richard A. O'Keefe.
  15.      Michael Widenius; ifdef MC68000
  16.     Updated: 23 April 1984
  17.     Defines: bzero()
  18.     bzero(dst, len) moves "len" 0 bytes to "dst".
  19.     Thus to clear a disc buffer to 0s do bzero(buffer, BUFSIZ).
  20.     Note: the "b" routines are there to exploit certain VAX order codes,
  21.     The asm code is presented for your interest and amusement.
  22. */
  23. #ifndef BSD_FUNCS
  24. #include "strings.h"
  25. #ifdef bzero
  26. #undef bzero /* remove macro */
  27. #endif
  28. #if VaxAsm
  29. static void _bzero64 _A((char *dst,int len));
  30. void bzero(dst, len)
  31. char *dst;
  32. uint len;
  33. {
  34.   while ((int) len >= 64*K)
  35.   {
  36.     _bzero64(dst, 64*K-1);
  37.     dst += 64*K-1;
  38.     len -= 64*K-1;
  39.   }
  40.   _bzero64(dst, len);
  41. }
  42. _bzero64(dst, len)
  43. char *dst;
  44. int  len;
  45. {
  46.   asm("movc5 $0,*4(ap),$0,8(ap),*4(ap)");
  47. }
  48. #else
  49. #if defined(MC68000) && defined(DS90)
  50. void bzero(dst, len)
  51. char *dst;
  52. uint len;
  53. {
  54.   bfill(dst,len,0); /* This is very optimized ! */
  55. } /* bzero */
  56. #else
  57. void bzero(dst, len)
  58. register char *dst;
  59. register uint len;
  60. {
  61.   while (len-- != 0) *dst++ = 0;
  62. } /* bzero */
  63. #endif
  64. #endif
  65. #endif /* BSD_FUNCS */