5 * Created by Arno Bakker, Victor Grishchenko
6 * Copyright 2009 Delft University of Technology. All rights reserved.
17 #include <sys/timeb.h>
26 static HANDLE map_handles[1024];
29 size_t file_size (int fd) {
35 int file_seek (int fd, size_t offset) {
37 return lseek(fd,offset,SEEK_SET);
39 return _lseek(fd,offset,SEEK_SET);
43 int file_resize (int fd, size_t new_size) {
45 return ftruncate(fd, new_size);
47 return _chsize(fd,new_size);
51 void print_error(const char* msg) {
54 int e = WSAGetLastError();
56 fprintf(stderr,"network error #%u\n",e);
60 void* memory_map (int fd, size_t size) {
65 mapping = mmap (NULL, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
66 if (mapping==MAP_FAILED)
70 HANDLE fhandle = (HANDLE)_get_osfhandle(fd);
72 HANDLE maphandle = CreateFileMapping( fhandle,
78 if (maphandle == NULL)
80 map_handles[fd] = maphandle;
82 mapping = MapViewOfFile ( maphandle,
92 void memory_unmap (int fd, void* mapping, size_t size) {
97 UnmapViewOfFile(mapping);
98 CloseHandle(map_handles[fd]);
104 size_t pread(int fildes, void *buf, size_t nbyte, long offset)
106 _lseek(fildes,offset,SEEK_SET);
107 return read(fildes,buf,nbyte);
110 size_t pwrite(int fildes, const void *buf, size_t nbyte, long offset)
112 _lseek(fildes,offset,SEEK_SET);
113 return write(fildes,buf,nbyte);
117 int inet_aton(const char *cp, struct in_addr *inp)
119 inp->S_un.S_addr = inet_addr(cp);
127 LARGE_INTEGER get_freq() {
128 LARGE_INTEGER proc_freq;
129 if (!::QueryPerformanceFrequency(&proc_freq))
130 print_error("HiResTimeOfDay: QueryPerformanceFrequency() failed");
136 static LARGE_INTEGER last_time;
137 LARGE_INTEGER cur_time;
138 QueryPerformanceCounter(&cur_time);
139 if (cur_time.QuadPart<last_time.QuadPart)
140 print_error("QueryPerformanceCounter wrapped"); // does this happen?
141 last_time = cur_time;
142 static float freq = 1000000.0/get_freq().QuadPart;
143 tint usec = cur_time.QuadPart * freq;
153 gettimeofday(&t,NULL);
163 void LibraryInit(void)
166 static WSADATA _WSAData;
167 // win32 requires you to initialize the Winsock DLL with the desired
168 // specification version
169 WORD wVersionRequested;
170 wVersionRequested = MAKEWORD(2, 2);
171 WSAStartup(wVersionRequested, &_WSAData);