sgi_if.c
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:2k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /* $Id$
  2.  *
  3.  * This file is subject to the terms and conditions of the GNU General Public
  4.  * License.  See the file "COPYING" in the main directory of this archive
  5.  * for more details.
  6.  *
  7.  * Copyright (C) 1992 - 1997, 2000-2001 Silicon Graphics, Inc. All rights reserved.
  8.  */
  9. #include <linux/types.h>
  10. #include <linux/ctype.h>
  11. #include <linux/mm.h>
  12. #include <linux/slab.h>
  13. #include <asm/sn/sgi.h>
  14. #include <asm/sn/invent.h>
  15. #include <asm/sn/hcl.h>
  16. #include <asm/sn/labelcl.h>
  17. #include <asm/sn/pci/bridge.h>
  18. #include <asm/sn/ioerror_handling.h>
  19. #include <asm/sn/pci/pciio.h>
  20. #include <asm/sn/slotnum.h>
  21. void *
  22. snia_kmem_zalloc(size_t size, int flag)
  23. {
  24.         void *ptr = kmalloc(size, GFP_KERNEL);
  25.         BZERO(ptr, size);
  26.         return ptr;
  27. }
  28. #define xtod(c)         ((c) <= '9' ? '0' - (c) : 'a' - (c) - 10)
  29. long
  30. atoi(register char *p)
  31. {
  32.         register long n;
  33.         register int c, neg = 0;
  34.         if (p == NULL)
  35.                 return 0;
  36.         if (!isdigit(c = *p)) {
  37.                 while (isspace(c))
  38.                         c = *++p;
  39.                 switch (c) {
  40.                 case '-':
  41.                         neg++;
  42.                 case '+': /* fall-through */
  43.                         c = *++p;
  44.                 }
  45.                 if (!isdigit(c))
  46.                         return (0);
  47.         }
  48.         if (c == '0' && *(p + 1) == 'x') {
  49.                 p += 2;
  50.                 c = *p;
  51.                 n = xtod(c);
  52.                 while ((c = *++p) && isxdigit(c)) {
  53.                         n *= 16; /* two steps to avoid unnecessary overflow */
  54.                         n += xtod(c); /* accum neg to avoid surprises at MAX */
  55.                 }
  56.         } else {
  57.                 n = '0' - c;
  58.                 while ((c = *++p) && isdigit(c)) {
  59.                         n *= 10; /* two steps to avoid unnecessary overflow */
  60.                         n += '0' - c; /* accum neg to avoid surprises at MAX */
  61.                 }
  62.         }
  63.         return (neg ? n : -n);
  64. }