Skip to content

Commit 35984ca

Browse files
committed
WIP on getting code to compile
1 parent 2ab2c26 commit 35984ca

File tree

3 files changed

+93
-1
lines changed

3 files changed

+93
-1
lines changed

os/linux_base.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ typedef uint32_t mach_port_t;
1515
#define MACH_PORT_NULL 0
1616
#define MACH_PORT_DEAD -1
1717

18+
#define EVFILT_MACHPORT -8
1819

1920
typedef uint32_t mach_error_t;
2021

@@ -65,6 +66,14 @@ struct voucher_offsets_s {
6566

6667
// bogus...
6768
#define PAGE_SIZE 4096
69+
#define SIZE_T_MAX 0x7fffffff
70+
71+
#define NOTE_VM_PRESSURE 0
72+
#define NOTE_ABSOLUTE 0
73+
#define NOTE_NSECONDS 0
74+
#define NOTE_LEEWAY 0
75+
#define NOTE_CRITICAL 0
76+
#define NOTE_BACKGROUND 0
6877

6978
/*
7079
* Stub out misc linking and compilation attributes

src/source.c

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1192,9 +1192,17 @@ _dispatch_kevent_merge(_dispatch_kevent_qos_s *ke)
11921192
dk = (void*)ke->udata;
11931193
dispatch_assert(dk);
11941194

1195+
#ifdef __LINUX_PORT_HDD__
1196+
LINUX_PORT_ERROR();
1197+
// NOT CORRECT (doesn't support removal during iteration)
1198+
TAILQ_FOREACH(dri, &dk->dk_sources, dr_list) {
1199+
_dispatch_source_merge_kevent(_dispatch_source_from_refs(dri), ke);
1200+
}
1201+
#else
11951202
TAILQ_FOREACH_SAFE(dri, &dk->dk_sources, dr_list, dr_next) {
11961203
_dispatch_source_merge_kevent(_dispatch_source_from_refs(dri), ke);
11971204
}
1205+
#endif
11981206
}
11991207

12001208
#if DISPATCH_USE_GUARDED_FD_CHANGE_FDGUARD
@@ -3094,6 +3102,30 @@ _dispatch_mach_notify_merge(mach_port_t name, uint32_t flag, bool final)
30943102
unreg = _dispatch_kevent_resume(dk, flag, 0);
30953103
}
30963104
DISPATCH_MACH_KEVENT_ARMED(dk) = 0;
3105+
#ifdef __LINUX_PORT_HDD__
3106+
LINUX_PORT_ERROR();
3107+
// NOT CORRECT (doesn't support removal during iteration)
3108+
TAILQ_FOREACH(dri, &dk->dk_sources, dr_list) {
3109+
dispatch_source_t dsi = _dispatch_source_from_refs(dri);
3110+
if (dx_type(dsi) == DISPATCH_MACH_CHANNEL_TYPE) {
3111+
dispatch_mach_t dm = (dispatch_mach_t)dsi;
3112+
_dispatch_mach_merge_kevent(dm, &kev);
3113+
if (unreg && dm->dm_dkev) {
3114+
_dispatch_mach_kevent_unregister(dm);
3115+
}
3116+
} else {
3117+
_dispatch_source_merge_kevent(dsi, &kev);
3118+
if (unreg) {
3119+
_dispatch_source_kevent_unregister(dsi);
3120+
}
3121+
}
3122+
if (!dr_next || DISPATCH_MACH_KEVENT_ARMED(dk)) {
3123+
// current merge is last in list (dk might have been freed)
3124+
// or it re-armed the notification
3125+
return;
3126+
}
3127+
}
3128+
#else
30973129
TAILQ_FOREACH_SAFE(dri, &dk->dk_sources, dr_list, dr_next) {
30983130
dispatch_source_t dsi = _dispatch_source_from_refs(dri);
30993131
if (dx_type(dsi) == DISPATCH_MACH_CHANNEL_TYPE) {
@@ -3114,6 +3146,7 @@ _dispatch_mach_notify_merge(mach_port_t name, uint32_t flag, bool final)
31143146
return;
31153147
}
31163148
}
3149+
#endif
31173150
}
31183151

31193152
static kern_return_t
@@ -3966,9 +3999,17 @@ _dispatch_mach_disconnect(dispatch_mach_t dm)
39663999
}
39674000
if (!TAILQ_EMPTY(&dm->dm_refs->dm_replies)) {
39684001
dispatch_mach_reply_refs_t dmr, tmp;
4002+
#ifdef __LINUX_PORT_HDD__
4003+
LINUX_PORT_ERROR();
4004+
// NOT CORRECT (doesn't support removal during iteration)
4005+
TAILQ_FOREACH(dmr, &dm->dm_refs->dm_replies, dmr_list){
4006+
_dispatch_mach_reply_kevent_unregister(dm, dmr, true);
4007+
}
4008+
#else
39694009
TAILQ_FOREACH_SAFE(dmr, &dm->dm_refs->dm_replies, dmr_list, tmp){
39704010
_dispatch_mach_reply_kevent_unregister(dm, dmr, true);
39714011
}
4012+
#endif
39724013
}
39734014
}
39744015

@@ -4735,6 +4776,10 @@ _dispatch_source_debug(dispatch_source_t ds, char* buf, size_t bufsiz)
47354776
static size_t
47364777
_dispatch_mach_debug_attr(dispatch_mach_t dm, char* buf, size_t bufsiz)
47374778
{
4779+
#ifdef __LINUX_PORT_HDD__
4780+
LINUX_PORT_ERROR();
4781+
return (size_t)0;
4782+
#else
47384783
dispatch_queue_t target = dm->do_targetq;
47394784
return dsnprintf(buf, bufsiz, "target = %s[%p], receive = 0x%x, "
47404785
"send = 0x%x, send-possible = 0x%x%s, checkin = 0x%x%s, "
@@ -4748,10 +4793,15 @@ _dispatch_mach_debug_attr(dispatch_mach_t dm, char* buf, size_t bufsiz)
47484793
dm->dm_refs->dm_checkin ? " (pending)" : "",
47494794
dm->dm_refs->dm_sending, dm->dm_refs->dm_disconnect_cnt,
47504795
(bool)(dm->ds_atomic_flags & DSF_CANCELED));
4796+
#endif
47514797
}
47524798
size_t
47534799
_dispatch_mach_debug(dispatch_mach_t dm, char* buf, size_t bufsiz)
47544800
{
4801+
#ifdef __LINUX_PORT_HDD__
4802+
LINUX_PORT_ERROR();
4803+
return (size_t)0;
4804+
#else
47554805
size_t offset = 0;
47564806
offset += dsnprintf(&buf[offset], bufsiz - offset, "%s[%p] = { ",
47574807
dm->dq_label && !dm->dm_cancel_handler_called ? dm->dq_label :
@@ -4760,6 +4810,7 @@ _dispatch_mach_debug(dispatch_mach_t dm, char* buf, size_t bufsiz)
47604810
offset += _dispatch_mach_debug_attr(dm, &buf[offset], bufsiz - offset);
47614811
offset += dsnprintf(&buf[offset], bufsiz - offset, "}");
47624812
return offset;
4813+
#endif
47634814
}
47644815

47654816
#if DISPATCH_DEBUG

src/transform.c

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@
2020

2121
#include "internal.h"
2222

23+
#ifdef __APPLE__
2324
#include <libkern/OSByteOrder.h>
25+
#endif
2426

2527
#if defined(__LITTLE_ENDIAN__)
2628
#define DISPATCH_DATA_FORMAT_TYPE_UTF16_HOST DISPATCH_DATA_FORMAT_TYPE_UTF16LE
@@ -195,19 +197,29 @@ _dispatch_transform_detect_utf(dispatch_data_t data)
195197
static uint16_t
196198
_dispatch_transform_swap_to_host(uint16_t x, int32_t byteOrder)
197199
{
200+
#ifdef __LINUX_PORT_HDD__
201+
LINUX_PORT_ERROR();
202+
return x;
203+
#else
198204
if (byteOrder == OSLittleEndian) {
199-
return OSSwapLittleToHostInt16(x);
205+
return OSSwapLittleToHostInt16(x);
200206
}
201207
return OSSwapBigToHostInt16(x);
208+
#endif
202209
}
203210

204211
static uint16_t
205212
_dispatch_transform_swap_from_host(uint16_t x, int32_t byteOrder)
206213
{
214+
#ifdef __LINUX_PORT_HDD__
215+
LINUX_PORT_ERROR();
216+
return x;
217+
#else
207218
if (byteOrder == OSLittleEndian) {
208219
return OSSwapHostToLittleInt16(x);
209220
}
210221
return OSSwapHostToBigInt16(x);
222+
#endif
211223
}
212224

213225
#pragma mark -
@@ -519,25 +531,45 @@ _dispatch_transform_from_utf16(dispatch_data_t data, int32_t byteOrder)
519531
static dispatch_data_t
520532
_dispatch_transform_from_utf16le(dispatch_data_t data)
521533
{
534+
#ifdef __LINUX_PORT_HDD__
535+
LINUX_PORT_ERROR();
536+
return (dispatch_data_t)0;
537+
#else
522538
return _dispatch_transform_from_utf16(data, OSLittleEndian);
539+
#endif
523540
}
524541

525542
static dispatch_data_t
526543
_dispatch_transform_from_utf16be(dispatch_data_t data)
527544
{
545+
#ifdef __LINUX_PORT_HDD__
546+
LINUX_PORT_ERROR();
547+
return (dispatch_data_t)0;
548+
#else
528549
return _dispatch_transform_from_utf16(data, OSBigEndian);
550+
#endif
529551
}
530552

531553
static dispatch_data_t
532554
_dispatch_transform_to_utf16le(dispatch_data_t data)
533555
{
556+
#ifdef __LINUX_PORT_HDD__
557+
LINUX_PORT_ERROR();
558+
return (dispatch_data_t)0;
559+
#else
534560
return _dispatch_transform_to_utf16(data, OSLittleEndian);
561+
#endif
535562
}
536563

537564
static dispatch_data_t
538565
_dispatch_transform_to_utf16be(dispatch_data_t data)
539566
{
567+
#ifdef __LINUX_PORT_HDD__
568+
LINUX_PORT_ERROR();
569+
return (dispatch_data_t)0;
570+
#else
540571
return _dispatch_transform_to_utf16(data, OSBigEndian);
572+
#endif
541573
}
542574

543575
#pragma mark -

0 commit comments

Comments
 (0)