qemu/pc-bios/s390-ccw/libc.h
<<
>>
Prefs
   1/*
   2 * libc-style definitions and functions
   3 *
   4 * Copyright (c) 2013 Alexander Graf <agraf@suse.de>
   5 *
   6 * This code is free software; you can redistribute it and/or modify it
   7 * under the terms of the GNU General Public License as published by the
   8 * Free Software Foundation; either version 2 of the License, or (at your
   9 * option) any later version.
  10 */
  11
  12#ifndef S390_CCW_LIBC_H
  13#define S390_CCW_LIBC_H
  14
  15typedef unsigned long      size_t;
  16typedef int                bool;
  17typedef unsigned char      uint8_t;
  18typedef unsigned short     uint16_t;
  19typedef unsigned int       uint32_t;
  20typedef unsigned long long uint64_t;
  21
  22static inline void *memset(void *s, int c, size_t n)
  23{
  24    size_t i;
  25    unsigned char *p = s;
  26
  27    for (i = 0; i < n; i++) {
  28        p[i] = c;
  29    }
  30
  31    return s;
  32}
  33
  34static inline void *memcpy(void *s1, const void *s2, size_t n)
  35{
  36    uint8_t *dest = s1;
  37    const uint8_t *src = s2;
  38    size_t i;
  39
  40    for (i = 0; i < n; i++) {
  41        dest[i] = src[i];
  42    }
  43
  44    return s1;
  45}
  46
  47static inline int memcmp(const void *s1, const void *s2, size_t n)
  48{
  49    size_t i;
  50    const uint8_t *p1 = s1, *p2 = s2;
  51
  52    for (i = 0; i < n; i++) {
  53        if (p1[i] != p2[i]) {
  54            return p1[i] > p2[i] ? 1 : -1;
  55        }
  56    }
  57
  58    return 0;
  59}
  60
  61static inline size_t strlen(const char *str)
  62{
  63    size_t i;
  64    for (i = 0; *str; i++) {
  65        str++;
  66    }
  67    return i;
  68}
  69
  70static inline char *strcat(char *dest, const char *src)
  71{
  72    int i;
  73    char *dest_end = dest + strlen(dest);
  74
  75    for (i = 0; i <= strlen(src); i++) {
  76        dest_end[i] = src[i];
  77    }
  78    return dest;
  79}
  80
  81static inline int isdigit(int c)
  82{
  83    return (c >= '0') && (c <= '9');
  84}
  85
  86uint64_t atoui(const char *str);
  87char *uitoa(uint64_t num, char *str, size_t len);
  88
  89#endif
  90