# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1201011622 0
# Node ID 945820bfedb6e8169cfe98284a06092580d9a19d
# Parent 7b1e7e8a51305df3afe90436d7acde30a1080604
minios: POSIX fixes
Fixes some functions which are POSIX. Also make them ifndef HAVE_LIBC.
Signed-off-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxxx>
---
extras/mini-os/arch/ia64/time.c | 4 ++--
extras/mini-os/fs-front.c | 4 ++--
extras/mini-os/include/blkfront.h | 2 +-
extras/mini-os/include/ia64/os.h | 2 ++
extras/mini-os/include/lib.h | 12 +++++++++++-
extras/mini-os/include/sched.h | 2 +-
extras/mini-os/include/types.h | 19 +++++++++++++++----
extras/mini-os/include/xmalloc.h | 18 +++++++++++++++---
extras/mini-os/kernel.c | 15 +--------------
extras/mini-os/lib/math.c | 17 +++++++++++++++++
extras/mini-os/lib/xmalloc.c | 2 ++
extras/mini-os/sched.c | 2 +-
12 files changed, 70 insertions(+), 29 deletions(-)
diff -r 7b1e7e8a5130 -r 945820bfedb6 extras/mini-os/arch/ia64/time.c
--- a/extras/mini-os/arch/ia64/time.c Tue Jan 22 11:35:26 2008 +0000
+++ b/extras/mini-os/arch/ia64/time.c Tue Jan 22 14:20:22 2008 +0000
@@ -76,7 +76,7 @@ static uint64_t itm_val;
* will already get problems at other places on 2038-01-19 03:14:08)
*/
static unsigned long
-mktime(const unsigned int year0, const unsigned int mon0,
+_mktime(const unsigned int year0, const unsigned int mon0,
const unsigned int day, const unsigned int hour,
const unsigned int min, const unsigned int sec)
{
@@ -260,7 +260,7 @@ init_time(void)
if (efi_get_time(&tm)) {
printk(" EFI-Time: %d.%d.%d %d:%d:%d\n", tm.Day,
tm.Month, tm.Year, tm.Hour, tm.Minute, tm.Second);
- os_time.tv_sec = mktime(SWAP(tm.Year), SWAP(tm.Month),
+ os_time.tv_sec = _mktime(SWAP(tm.Year), SWAP(tm.Month),
SWAP(tm.Day), SWAP(tm.Hour),
SWAP(tm.Minute), SWAP(tm.Second));
os_time.tv_nsec = tm.Nanosecond;
diff -r 7b1e7e8a5130 -r 945820bfedb6 extras/mini-os/fs-front.c
--- a/extras/mini-os/fs-front.c Tue Jan 22 11:35:26 2008 +0000
+++ b/extras/mini-os/fs-front.c Tue Jan 22 14:20:22 2008 +0000
@@ -817,7 +817,7 @@ void test_fs_import(void *data)
long ret64;
/* Sleep for 1s and then try to open a file */
- sleep(1000);
+ msleep(1000);
ret = fs_create(import, "mini-os-created-directory", 1, 0777);
printk("Directory create: %d\n", ret);
@@ -1013,7 +1013,7 @@ done:
printk("Backend found at %s\n", import->backend);
break;
}
- sleep(WAIT_PERIOD);
+ msleep(WAIT_PERIOD);
}
if(!import->backend)
diff -r 7b1e7e8a5130 -r 945820bfedb6 extras/mini-os/include/blkfront.h
--- a/extras/mini-os/include/blkfront.h Tue Jan 22 11:35:26 2008 +0000
+++ b/extras/mini-os/include/blkfront.h Tue Jan 22 14:20:22 2008 +0000
@@ -7,7 +7,7 @@ struct blkfront_aiocb
struct blkfront_dev *aio_dev;
uint8_t *aio_buf;
size_t aio_nbytes;
- uint64_t aio_offset;
+ off_t aio_offset;
void *data;
grant_ref_t gref[BLKIF_MAX_SEGMENTS_PER_REQUEST];
diff -r 7b1e7e8a5130 -r 945820bfedb6 extras/mini-os/include/ia64/os.h
--- a/extras/mini-os/include/ia64/os.h Tue Jan 22 11:35:26 2008 +0000
+++ b/extras/mini-os/include/ia64/os.h Tue Jan 22 14:20:22 2008 +0000
@@ -38,7 +38,9 @@
typedef uint64_t paddr_t; /* Physical address. */
+#ifndef HAVE_LIBC
typedef uint64_t caddr_t; /* rr7/kernel memory address. */
+#endif
#include "page.h"
#include "mm.h"
diff -r 7b1e7e8a5130 -r 945820bfedb6 extras/mini-os/include/lib.h
--- a/extras/mini-os/include/lib.h Tue Jan 22 11:35:26 2008 +0000
+++ b/extras/mini-os/include/lib.h Tue Jan 22 14:20:22 2008 +0000
@@ -59,6 +59,9 @@
#include <stddef.h>
#include <console.h>
+#ifdef HAVE_LIBC
+#include <stdio.h>
+#else
/* printing */
#define _p(_x) ((void *)(unsigned long)(_x))
int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
@@ -69,13 +72,16 @@ int sprintf(char * buf, const char *fmt,
int sprintf(char * buf, const char *fmt, ...);
int vsscanf(const char * buf, const char * fmt, va_list args);
int sscanf(const char * buf, const char * fmt, ...);
+#endif
long simple_strtol(const char *cp,char **endp,unsigned int base);
unsigned long simple_strtoul(const char *cp,char **endp,unsigned int base);
long long simple_strtoll(const char *cp,char **endp,unsigned int base);
unsigned long long simple_strtoull(const char *cp,char **endp,unsigned int
base);
-
+#ifdef HAVE_LIBC
+#include <string.h>
+#else
/* string and memory manipulation */
int memcmp(const void *cs, const void *ct, size_t count);
void *memcpy(void *dest, const void *src, size_t count);
@@ -91,7 +97,11 @@ char *strstr(const char *s1, const char
char *strstr(const char *s1, const char *s2);
char * strcat(char * dest, const char * src);
char *strdup(const char *s);
+#endif
+#define RAND_MIX 2654435769U
+
+int rand(void);
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
diff -r 7b1e7e8a5130 -r 945820bfedb6 extras/mini-os/include/sched.h
--- a/extras/mini-os/include/sched.h Tue Jan 22 11:35:26 2008 +0000
+++ b/extras/mini-os/include/sched.h Tue Jan 22 14:20:22 2008 +0000
@@ -47,6 +47,6 @@ void schedule(void);
void wake(struct thread *thread);
void block(struct thread *thread);
-void sleep(u32 millisecs);
+void msleep(u32 millisecs);
#endif /* __SCHED_H__ */
diff -r 7b1e7e8a5130 -r 945820bfedb6 extras/mini-os/include/types.h
--- a/extras/mini-os/include/types.h Tue Jan 22 11:35:26 2008 +0000
+++ b/extras/mini-os/include/types.h Tue Jan 22 14:20:22 2008 +0000
@@ -42,7 +42,6 @@ typedef unsigned long u_long;
#ifdef __i386__
typedef long long quad_t;
typedef unsigned long long u_quad_t;
-typedef unsigned int uintptr_t;
#if !defined(CONFIG_X86_PAE)
typedef struct { unsigned long pte_low; } pte_t;
@@ -53,7 +52,6 @@ typedef struct { unsigned long pte_low,
#elif defined(__x86_64__) || defined(__ia64__)
typedef long quad_t;
typedef unsigned long u_quad_t;
-typedef unsigned long uintptr_t;
typedef struct { unsigned long pte; } pte_t;
#endif /* __i386__ || __x86_64__ */
@@ -65,18 +63,31 @@ typedef struct { unsigned long pte; } pt
((pte_t) {(unsigned long)(_x), (unsigned long)(_x>>32)}); })
#endif
+#ifdef HAVE_LIBC
+#include <limits.h>
+#include <stdint.h>
+#else
+#ifdef __i386__
+typedef unsigned int uintptr_t;
+typedef int intptr_t;
+#elif defined(__x86_64__) || defined(__ia64__)
+typedef unsigned long uintptr_t;
+typedef long intptr_t;
+#endif /* __i386__ || __x86_64__ */
typedef u8 uint8_t;
typedef s8 int8_t;
typedef u16 uint16_t;
typedef s16 int16_t;
typedef u32 uint32_t;
typedef s32 int32_t;
-typedef u64 uint64_t;
-typedef s64 int64_t;
+typedef u64 uint64_t, uintmax_t;
+typedef s64 int64_t, intmax_t;
+typedef u64 off_t;
#define INT_MAX ((int)(~0U>>1))
#define UINT_MAX (~0U)
typedef long ssize_t;
+#endif
#endif /* _TYPES_H_ */
diff -r 7b1e7e8a5130 -r 945820bfedb6 extras/mini-os/include/xmalloc.h
--- a/extras/mini-os/include/xmalloc.h Tue Jan 22 11:35:26 2008 +0000
+++ b/extras/mini-os/include/xmalloc.h Tue Jan 22 14:20:22 2008 +0000
@@ -1,11 +1,15 @@
#ifndef __XMALLOC_H__
#define __XMALLOC_H__
+#ifdef HAVE_LIBC
+
+#include <stdlib.h>
+#include <malloc.h>
/* Allocate space for typed object. */
-#define xmalloc(_type) ((_type *)_xmalloc(sizeof(_type), __alignof__(_type)))
+#define _xmalloc(size, align) memalign(align, size)
+#define xfree(ptr) free(ptr)
-/* Allocate space for array of typed objects. */
-#define xmalloc_array(_type, _num) ((_type *)_xmalloc_array(sizeof(_type),
__alignof__(_type), _num))
+#else
#define DEFAULT_ALIGN (sizeof(unsigned long))
#define malloc(size) _xmalloc(size, DEFAULT_ALIGN)
@@ -19,6 +23,8 @@ extern void *_xmalloc(size_t size, size_
extern void *_xmalloc(size_t size, size_t align);
extern void *_realloc(void *ptr, size_t size);
+#endif
+
static inline void *_xmalloc_array(size_t size, size_t align, size_t num)
{
/* Check for overflow. */
@@ -27,4 +33,10 @@ static inline void *_xmalloc_array(size_
return _xmalloc(size * num, align);
}
+/* Allocate space for typed object. */
+#define xmalloc(_type) ((_type *)_xmalloc(sizeof(_type), __alignof__(_type)))
+
+/* Allocate space for array of typed objects. */
+#define xmalloc_array(_type, _num) ((_type *)_xmalloc_array(sizeof(_type),
__alignof__(_type), _num))
+
#endif /* __XMALLOC_H__ */
diff -r 7b1e7e8a5130 -r 945820bfedb6 extras/mini-os/kernel.c
--- a/extras/mini-os/kernel.c Tue Jan 22 11:35:26 2008 +0000
+++ b/extras/mini-os/kernel.c Tue Jan 22 14:20:22 2008 +0000
@@ -80,26 +80,13 @@ static void periodic_thread(void *p)
{
gettimeofday(&tv, NULL);
printk("T(s=%ld us=%ld)\n", tv.tv_sec, tv.tv_usec);
- sleep(1000);
+ msleep(1000);
}
}
static void netfront_thread(void *p)
{
init_netfront(NULL, NULL, NULL);
-}
-
-#define RAND_MIX 2654435769U
-
-/* Should be random enough for this use */
-static int rand(void)
-{
- static unsigned int previous;
- struct timeval tv;
- gettimeofday(&tv, NULL);
- previous += tv.tv_sec + tv.tv_usec;
- previous *= RAND_MIX;
- return previous;
}
static struct blkfront_dev *blk_dev;
diff -r 7b1e7e8a5130 -r 945820bfedb6 extras/mini-os/lib/math.c
--- a/extras/mini-os/lib/math.c Tue Jan 22 11:35:26 2008 +0000
+++ b/extras/mini-os/lib/math.c Tue Jan 22 14:20:22 2008 +0000
@@ -56,6 +56,8 @@
*/
#include <types.h>
+#include <lib.h>
+#include <time.h>
/* On ia64 these functions lead to crashes. These are replaced by
* assembler functions. */
@@ -85,7 +87,9 @@ union uu {
* These are used for shifting, and also below for halfword extraction
* and assembly.
*/
+#ifndef HAVE_LIBC
#define CHAR_BIT 8 /* number of bits in a char */
+#endif
#define QUAD_BITS (sizeof(s64) * CHAR_BIT)
#define LONG_BITS (sizeof(long) * CHAR_BIT)
#define HALF_BITS (sizeof(long) * CHAR_BIT / 2)
@@ -385,3 +389,16 @@ __umoddi3(u_quad_t a, u_quad_t b)
}
#endif /* !defined(__ia64__) */
+
+#ifndef HAVE_LIBC
+/* Should be random enough for our uses */
+int rand(void)
+{
+ static unsigned int previous;
+ struct timeval tv;
+ gettimeofday(&tv, NULL);
+ previous += tv.tv_sec + tv.tv_usec;
+ previous *= RAND_MIX;
+ return previous;
+}
+#endif
diff -r 7b1e7e8a5130 -r 945820bfedb6 extras/mini-os/lib/xmalloc.c
--- a/extras/mini-os/lib/xmalloc.c Tue Jan 22 11:35:26 2008 +0000
+++ b/extras/mini-os/lib/xmalloc.c Tue Jan 22 14:20:22 2008 +0000
@@ -43,6 +43,7 @@
#include <list.h>
#include <xmalloc.h>
+#ifndef HAVE_LIBC
static LIST_HEAD(freelist);
/* static spinlock_t freelist_lock = SPIN_LOCK_UNLOCKED; */
@@ -295,3 +296,4 @@ void *_realloc(void *ptr, size_t size)
return new;
}
+#endif
diff -r 7b1e7e8a5130 -r 945820bfedb6 extras/mini-os/sched.c
--- a/extras/mini-os/sched.c Tue Jan 22 11:35:26 2008 +0000
+++ b/extras/mini-os/sched.c Tue Jan 22 14:20:22 2008 +0000
@@ -211,7 +211,7 @@ void block(struct thread *thread)
clear_runnable(thread);
}
-void sleep(u32 millisecs)
+void msleep(u32 millisecs)
{
struct thread *thread = get_current();
thread->wakeup_time = NOW() + MILLISECS(millisecs);
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|