OS X compatibility cleanups.
Reattach the licenses for the compat stuff to the source. Only build/link the compat stuff when it's needed. Rename compat/util.h so it's not confused with util.h. Move all the platform specific defines inside compat/compat.h.
This commit is contained in:
parent
ae126d1009
commit
1c80d1b784
12 changed files with 114 additions and 82 deletions
|
@ -1,4 +1,63 @@
|
|||
#ifdef __APPLE__
|
||||
/*
|
||||
* Copyright (c), MM Weiss
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of the MM Weiss nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* clock_gettime_stub.c
|
||||
* gcc -Wall -c clock_gettime_stub.c
|
||||
* posix realtime functions; MacOS user space glue
|
||||
*/
|
||||
|
||||
/* @comment
|
||||
* other possible implementation using intel builtin rdtsc
|
||||
* rdtsc-workaround: http://www.mcs.anl.gov/~kazutomo/rdtsc.html
|
||||
*
|
||||
* we could get the ticks by doing this
|
||||
*
|
||||
* __asm __volatile("mov %%ebx, %%esi\n\t"
|
||||
* "cpuid\n\t"
|
||||
* "xchg %%esi, %%ebx\n\t"
|
||||
* "rdtsc"
|
||||
* : "=a" (a),
|
||||
* "=d" (d)
|
||||
* );
|
||||
* we could even replace our tricky sched_yield call by assembly code to get a better accurency,
|
||||
* anyway the following C stub will satisfy 99% of apps using posix clock_gettime call,
|
||||
* moreover, the setter version (clock_settime) could be easly written using mach primitives:
|
||||
* http://www.opensource.apple.com/source/xnu/xnu-${VERSION}/osfmk/man/ (clock_[set|get]_time)
|
||||
*
|
||||
* hackers don't be crackers, don't you use a flush toilet?
|
||||
*
|
||||
*
|
||||
* @see draft: ./posix-realtime-stub/posix-realtime-stub.c
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "clock_gettime.h"
|
||||
#include <mach/clock.h> // for clock_get_time
|
||||
|
@ -75,5 +134,3 @@ int clock_gettime(clockid_t clk_id, struct timespec *tp)
|
|||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
#endif // __APPLE__
|
Loading…
Add table
Add a link
Reference in a new issue