cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

libc.h (1765B)


      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