=0A----- Original Message ----=0A=0AFrom: Scot Hetzel =
=0A=0ATo: Mike Pumford =0A=0ACc: freebsd-mobile@fr=
eebsd.org; freebsd-stable@freebsd.org; Abdullah Ibn Hamad Al-Marri et@yahoo.ca>=0A=0ASent: Wednesday, October 31, 2007 6:56:58 AM=0A=0ASubject=
: Re: 7.0 BETA1 and Thinkpad T61p : Wireless misadventure=0A=0A=0A=0A On 10=
/30/07, Mike Pumford wrote:=0A=0A> Abdullah Ibn H=
amad Al-Marri wrote:=0A=0A>=0A=0A> >=0A=0A> > Previously I didn't mention t=
hat there are some functions missing from=0A=0A> >=0A=0A> > the FreeBSD's =
NDIS api. These are:=0A=0A> >=0A=0A> > With the help of NDIS reference and =
Linux ndiswrapper I have been able=0A=0A> >=0A=0A> > to implement all but =
KeBugCheckEx (they are all rather simple but I=0A=0A> >=0A=0A> Can help you=
with this one. This is the Windows equivalent of panic().=0A=0A> So just =
call panic with an appropriate string. If the string includes=0A=0A> the bu=
gcheck code and parameters so much the better.=0A=0A>=0A=0AThanks for your =
hint to use panic() in the KeBugCheckEx function.=0A=0AI have KeBugCheckEx =
partially implemented. It currently prints the=0A=0Abugcheck code=0A=0Aand=
the 4 paramators that are sent to KeBugCheckEx.=0A=0A=0A=0AThe KeBugCheckE=
x function still needs to be changed to display=0A=0Athe right information =
depending on the bugcheck code.=0A=0A=0A=0A=0A=0A=0A=0AAbdullah, I made a m=
inor change to your patch, strncat should be=0A=0Aprefixed with ntoskrnl_st=
rncat.=0A=0Achanged IMPORT_CFUNC(strncat..) to IMPORT_CFUNC_MAP(ntoskrnl_s=
trncat..).=0A=0A=0A=0AScot=0A=0A=0A=0A=0A=0A-----Inline Attachment Follows-=
----=0A=0A=0A=0AIndex: ndis_var.h=0A=0A=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= 3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3 D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3 D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=0A=0ARCS file: /home/ncvs/src/sys/compat/ndis/ndis_var.h,v=
=0A=0Aretrieving revision 1.47=0A=0Adiff -u -r1.47 ndis_var.h=0A=0A--- ndis=
_var.h 6 Apr 2007 11:18:57 -0000 1.47=0A=0A+++ ndis_var.h 31 Oct 2=
007 03:31:24 -0000=0A=0A@@ -49,6 +49,10 @@=0A=0A typedef register_t ndis_ks=
pin_lock;=0A=0A typedef uint8_t ndis_kirql;=0A=0A =0A=0A+/* Version of NDIS=
supported by FreeBSD */=0A=0A+#define NDIS_VERSION_51 0x0005=
0001=0A=0A+#define NDIS_VERSION NDIS_VERSION_51=0A=0A+=0A=0A =
/*=0A=0A * NDIS status codes (there are lots of them). The ones that=0A=0A=
* don't seem to fit the pattern are actually mapped to generic=0A=0AIndex=
: ntoskrnl_var.h=0A=0A=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3 D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3 D=3D=3D=3D=3D=3D=3D=3D=3D=
=0A=0ARCS file: /home/ncvs/src/sys/compat/ndis/ntoskrnl_var.h,v=0A=0Aretrie=
ving revision 1.43=0A=0Adiff -u -r1.43 ntoskrnl_var.h=0A=0A--- ntoskrnl_var=
..h 17 Aug 2006 22:50:32 -0000 1.43=0A=0A+++ ntoskrnl_var.h 31 Oct =
2007 03:31:24 -0000=0A=0A@@ -1202,14 +1202,22 @@=0A=0A =0A=0A /* Memory poo=
l types, for ExAllocatePoolWithTag() */=0A=0A =0A=0A-#define NonPagedPool =
0x00000000=0A=0A-#define PagedPool 0x00000001=0A=0A-#d=
efine NonPagedPoolMustSucceed 0x00000002=0A=0A-#define DontUseThisTy=
pe 0x00000003=0A=0A-#define NonPagedPoolCacheAligned 0x000000=
04=0A=0A-#define PagedPoolCacheAligned 0x00000005=0A=0A-#define NonP=
agedPoolCacheAlignedMustS 0x00000006=0A=0A-#define MaxPoolType =
0x00000007=0A=0A+#define NonPagedPool 0x00000000=0A=0A+=
#define PagedPool 0x00000001=0A=0A+#define NonPagedPoo=
lMustSucceed 0x00000002=0A=0A+#define DontUseThisType =
0x00000003=0A=0A+#define NonPagedPoolCacheAligned 0x00000=
004=0A=0A+#define PagedPoolCacheAligned 0x00000005=0A=0A+#def=
ine NonPagedPoolCacheAlignedMustS 0x00000006=0A=0A+#define Max=
PoolType 0x00000007=0A=0A+=0A=0A+#define NonPagedPoolSess=
ion 0x00000020=0A=0A+#define PagedPoolSession 0x00=
000021=0A=0A+#define NonPagedPoolMustSucceedSession 0x00000022=0A=
=0A+#define DontUseThisTypeSession 0x00000023=0A=0A+#define =
NonPagedPoolCacheAlignedSession 0x00000024=0A=0A+#define PagedP=
oolCacheAlignedSession 0x00000025=0A=0A+#define NonPagedPoolCache=
AlignedMustSSession 0x00000026=0A=0A =0A=0A /*=0A=0A * IO_WORKITEM is a=
n opaque structures that must be allocated=0A=0A@@ -1357,8 +1365,12 @@=0A=
=0A extern uint8_t KeSynchronizeExecution(kinterrupt *, void *, void *);=0A=
=0A extern uintptr_t InterlockedExchange(volatile uint32_t *,=0A=0A uin=
tptr_t);=0A=0A+extern void *ExAllocatePool(uint32_t, size_t);=0A=0A+extern =
void *ExAllocatePoolWithQuota(uint32_t, size_t);=0A=0A+extern void *ExAlloc=
atePoolWithQuotaTag(uint32_t, size_t, uint32_t);=0A=0A extern void *ExAlloc=
atePoolWithTag(uint32_t, size_t, uint32_t);=0A=0A extern void ExFreePool(vo=
id *);=0A=0A+extern void ExFreePoolWithTag(void *, uint32_t);=0A=0A extern =
uint32_t IoConnectInterrupt(kinterrupt **, void *, void *,=0A=0A kspin_=
lock *, uint32_t, uint8_t, uint8_t, uint8_t, uint8_t,=0A=0A uint32_t, u=
int8_t);=0A=0AIndex: subr_ndis.c=0A=0A=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3 D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3 D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=0A=0ARCS file: /home/ncvs/src/sys/compat/ndis/subr_ndis.c,v=
=0A=0Aretrieving revision 1.108=0A=0Adiff -u -r1.108 subr_ndis.c=0A=0A--- s=
ubr_ndis.c 31 May 2007 11:51:49 -0000 1.108=0A=0A+++ subr_ndis.c 3=
1 Oct 2007 03:31:24 -0000=0A=0A@@ -272,6 +272,7 @@=0A=0A static void NdisUn=
mapFile(ndis_handle);=0A=0A static void NdisCloseFile(ndis_handle);=0A=0A s=
tatic uint8_t NdisSystemProcessorCount(void);=0A=0A+static void NdisGetCurr=
entProcessorCounts(uint32_t *, uint32_t *, uint32_t*);=0A=0A static void N=
disMIndicateStatusComplete(ndis_handle);=0A=0A static void NdisMIndicateSta=
tus(ndis_handle, ndis_status,=0A=0A void *, uint32_t);=0A=0A@@ -282=
,6 +283,7 @@=0A=0A uint32_t, uint32_t, ndis_packet *, uint32_t, uint32_=
t *);=0A=0A static void NdisCopyFromPacketToPacketSafe(ndis_packet *,=0A=0A=
uint32_t, uint32_t, ndis_packet *, uint32_t, uint32_t *, uint32_t);=
=0A=0A+static void NdisIMCopySendPerPacketInfo(ndis_packet *, ndis_packet *=
);=0A=0A static ndis_status NdisMRegisterDevice(ndis_handle,=0A=0A unic=
ode_string *, unicode_string *, driver_dispatch **,=0A=0A void **, ndis=
_handle *);=0A=0A@@ -3115,6 +3117,20 @@=0A=0A return(mp_ncpus);=0A=0A }=
=0A=0A =0A=0A+static void=0A=0A+NdisGetCurrentProcessorCounts(idlecount , ke=
rneluser, index)=0A=0A+ uint32_t *idlecount;=0A=0A+ uint32_t =
*kerneluser;=0A=0A+ uint32_t *index;=0A=0A+{=0A=0A+ int =
cpu =3D 0; /* Current CPU */=0A=0A+=0A=0A+ *idlecount =3D cp_time[CP_IDL=
E];=0A=0A+ *kerneluser =3D (cp_time[CP_USER] + cp_time[CP_NICE]) + \=
=0A=0A+ (cp_time[CP_SYS] + cp_time[CP_INTR]);=0A=0A+ *index =
=3D cpu;=0A=0A+}=0A=0A+=0A=0A typedef void (*ndis_statusdone_handler)(ndis_=
handle);=0A=0A typedef void (*ndis_status_handler)(ndis_handle, ndis_status=
,=0A=0A void *, uint32_t);=0A=0A@@ -3288,6 +3304,14 @@=0A=0A re=
turn;=0A=0A }=0A=0A =0A=0A+static void=0A=0A+NdisIMCopySendPerPacketInfo(dp=
kt, spkt)=0A=0A+ ndis_packet *dpkt;=0A=0A+ ndis_packet =
*spkt;=0A=0A+{=0A=0A+ memcpy(&dpkt->np_ext, &spkt->np_ext, sizeof(ndis_=
packet_extension));=0A=0A+}=0A=0A+=0A=0A static ndis_status=0A=0A NdisMRegi=
sterDevice(handle, devname, symname, majorfuncs, devobj, devhandle)=0A=0A =
ndis_handle handle;=0A=0A@@ -3346,6 +3370,12 @@=0A=0A return=
;=0A=0A }=0A=0A =0A=0A+static uint32_t=0A=0A+NdisGetVersion()=0A=0A+{=0A=0A=
+ return(NDIS_VERSION);=0A=0A+}=0A=0A+=0A=0A static void=0A=0A dummy()=
=0A=0A {=0A=0A@@ -3365,10 +3395,12 @@=0A=0A image_patch_table ndis_functbl[=
] =3D {=0A=0A IMPORT_SFUNC(NdisCopyFromPacketToPacket, 6),=0A=0A IM=
PORT_SFUNC(NdisCopyFromPacketToPacketSafe, 7),=0A=0A+ IMPORT_SFUNC(NdisI=
MCopySendPerPacketInfo, 2),=0A=0A IMPORT_SFUNC(NdisScheduleWorkItem, 1)=
,=0A=0A IMPORT_SFUNC(NdisMIndicateStatusComplete, 1),=0A=0A IMPORT_=
SFUNC(NdisMIndicateStatus, 4),=0A=0A IMPORT_SFUNC(NdisSystemProcessorCo=
unt, 0),=0A=0A+ IMPORT_SFUNC(NdisGetCurrentProcessorCounts, 3),=0A=0A =
IMPORT_SFUNC(NdisUnchainBufferAtBack, 2),=0A=0A IMPORT_SFUNC(NdisGetF=
irstBufferFromPacket, 5),=0A=0A IMPORT_SFUNC(NdisGetFirstBufferFromPack=
etSafe, 6),=0A=0A@@ -3482,6 +3514,7 @@=0A=0A IMPORT_SFUNC(NdisMDeregist=
erDevice, 1),=0A=0A IMPORT_SFUNC(NdisMQueryAdapterInstanceName, 2),=0A=
=0A IMPORT_SFUNC(NdisMRegisterUnloadHandler, 2),=0A=0A+ IMPORT_SFUNC=
(NdisGetVersion, 0),=0A=0A IMPORT_SFUNC(ndis_timercall, 4),=0A=0A I=
MPORT_SFUNC(ndis_asyncmem_complete, 2),=0A=0A IMPORT_SFUNC(ndis_intr, 2=
),=0A=0AIndex: subr_ntoskrnl.c=0A=0A=3D=3D=3D=3D=3D=3D=3D=3D=3D=3 D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3 D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3 D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=0A=0ARCS file: /home/ncvs/src/sys/compat/ndis/subr_ntoskrnl.c,=
v=0A=0Aretrieving revision 1.91=0A=0Adiff -u -r1.91 subr_ntoskrnl.c=0A=0A--=
- subr_ntoskrnl.c 20 Oct 2007 23:23:12 -0000 1.91=0A=0A+++ subr_ntosk=
rnl.c 31 Oct 2007 03:31:24 -0000=0A=0A@@ -219,6 +219,8 @@=0A=0A static i=
nt rand(void);=0A=0A static void srand(unsigned int);=0A=0A static void nto=
skrnl_time(uint64_t *);=0A=0A+static void KeQuerySystemTime(uint64_t *);=0A=
=0A+static uint32_t KeTickCount(void);=0A=0A static uint8_t IoIsWdmVersionA=
vailable(uint8_t, uint8_t);=0A=0A static void ntoskrnl_thrfunc(void *);=0A=
=0A static ndis_status PsCreateSystemThread(ndis_handle *,=0A=0A@@ -226,6 +=
228,8 @@=0A=0A static ndis_status PsTerminateSystemThread(ndis_status);=0A=
=0A static ndis_status IoGetDeviceProperty(device_object *, uint32_t,=0A=0A=
uint32_t, void *, uint32_t *);=0A=0A+static void KeBugCheckEx(uint32_t=
, uint32_t *, uint32_t *, uint32_t *,=0A=0A+ uint32_t *);=0A=0A static=
void KeInitializeMutex(kmutant *, uint32_t);=0A=0A static uint32_t KeRelea=
seMutex(kmutant *, uint8_t);=0A=0A static uint32_t KeReadStateMutex(kmutant=
*);=0A=0A@@ -238,8 +242,10 @@=0A=0A static uint32_t WmiTraceMessage(uint64=
_t, uint32_t, void *, uint16_t, ...);=0A=0A static uint32_t IoWMIRegistrat=
ionControl(device_object *, uint32_t);=0A=0A static void *ntoskrnl_memset(v=
oid *, int, size_t);=0A=0A+static int ntoskrnl_memcmp(void *, void *, size_=
t);=0A=0A static void *ntoskrnl_memmove(void *, void *, size_t);=0A=0A stat=
ic void *ntoskrnl_memchr(void *, unsigned char, size_t);=0A=0A+static char =
*ntoskrnl_strncat(char *, char *, size_t);=0A=0A static char *ntoskrnl_strs=
tr(char *, char *);=0A=0A static int ntoskrnl_toupper(int);=0A=0A static in=
t ntoskrnl_tolower(int);=0A=0A@@ -429,6 +435,16 @@=0A=0A return(memset(=
buf, ch, size));=0A=0A }=0A=0A =0A=0A+=0A=0A+static int=0A=0A+ntoskrnl_memc=
mp(buf1, buf2, size)=0A=0A+ void *buf1;=0A=0A+ void =
*buf2;=0A=0A+ size_t size;=0A=0A+{=0A=0A+ return(memc=
mp(buf1, buf2, size));=0A=0A+}=0A=0A+=0A=0A static void *=0A=0A ntoskrnl_me=
mmove(dst, src, size)=0A=0A void *src;=0A=0A@@ -456,6 +472,2=
9 @@=0A=0A return (NULL);=0A=0A }=0A=0A =0A=0A+/* Taken from libc */=0A=
=0A+char *=0A=0A+ntoskrnl_strncat(dst, src, n)=0A=0A+ char *dst;=
=0A=0A+ char *src;=0A=0A+ size_t n;=0A=0A+{=0A=0A+ i=
f (n !=3D 0) {=0A=0A+ char *d =3D dst;=0A=0A+ const char *s =
=3D src;=0A=0A+ =0A=0A+ while (*d !=3D 0)=0A=0A+ d=
++;=0A=0A+ do {=0A=0A+ if ((*d =3D *s++) =3D=3D 0)=0A=0A+=
break;=0A=0A+ d++;=0A=0A+ } while (--n !=
=3D 0);=0A=0A+ *d =3D 0;=0A=0A+ }=0A=0A+ return (dst);=0A=0A+}=
=0A=0A+=0A=0A static char *=0A=0A ntoskrnl_strstr(s, find)=0A=0A char *=
s, *find;=0A=0A@@ -624,6 +663,31 @@=0A=0A }=0A=0A =0A=0A void *=0A=0A+ExAll=
ocatePool(pooltype, len)=0A=0A+ uint32_t pooltype;=0A=0A+ size=
_t len;=0A=0A+{=0A=0A+ return(ExAllocatePoolWithTag(pooltype,=
len, 0));=0A=0A+}=0A=0A+=0A=0A+void *=0A=0A+ExAllocatePoolWithQuota(poolty=
pe, len)=0A=0A+ uint32_t pooltype;=0A=0A+ size_t le=
n;=0A=0A+{=0A=0A+ return(ExAllocatePoolWithTag(pooltype, len, 0));=0A=0A=
+}=0A=0A+=0A=0A+void *=0A=0A+ExAllocatePoolWithQuotaTag(pooltype, len, tag)=
=0A=0A+ uint32_t pooltype;=0A=0A+ size_t len;=0A=0A=
+ uint32_t tag;=0A=0A+{=0A=0A+ return(ExAllocatePoolWithTag(po=
oltype, len, tag));=0A=0A+}=0A=0A+=0A=0A+void *=0A=0A ExAllocatePoolWithTag=
(pooltype, len, tag)=0A=0A uint32_t pooltype;=0A=0A size_t =
len;=0A=0A@@ -642,6 +706,14 @@=0A=0A ExFreePool(buf)=0A=0A vo=
id *buf;=0A=0A {=0A=0A+ ExFreePoolWithTag(buf, 0);=0A=0A+}=0A=
=0A+=0A=0A+void=0A=0A+ExFreePoolWithTag(buf, tag)=0A=0A+ void =
*buf;=0A=0A+ uint32_t tag;=0A=0A+{=0A=0A free(buf, M_DEVBUF)=
;=0A=0A return;=0A=0A }=0A=0A@@ -1587,6 +1659,21 @@=0A=0A return;=
=0A=0A }=0A=0A =0A=0A+static void=0A=0A+KeQuerySystemTime(current_time)=0A=
=0A+ uint64_t *current_time;=0A=0A+{=0A=0A+ ntoskrnl_time(curr=
ent_time);=0A=0A+}=0A=0A+=0A=0A+static uint32_t=0A=0A+KeTickCount(void)=0A=
=0A+{=0A=0A+ struct timeval tv;=0A=0A+ getmicrouptime(&tv);=0A=0A+ =
return tvtohz(&tv);=0A=0A+}=0A=0A+=0A=0A /*=0A=0A * KeWaitForSingleObject=
() is a tricky beast, because it can be used=0A=0A * with several differen=
t object types: semaphores, timers, events,=0A=0A@@ -2316,6 +2403,22 @@=0A=
=0A }=0A=0A =0A=0A void=0A=0A+KeBugCheckEx(bugcheck, param1, param2, param3=
, param4)=0A=0A+ uint32_t bugcheck;=0A=0A+ uint32_t *pa=
ram1;=0A=0A+ uint32_t *param2;=0A=0A+ uint32_t *param3;=
=0A=0A+ uint32_t *param4;=0A=0A+{=0A=0A+ /* http://msdn2.micro=
soft.com/en-us/library/ms801645.aspx */=0A=0A+=0A=0A+ panic("KeBugCheckE=
x: STOP: %#08x, (%8p, %8p, %8p, %8p)",=0A=0A+ bugcheck, param1, para=
m2, param3, param4);=0A=0A+=0A=0A+ return;=0A=0A+}=0A=0A+=0A=0A+void=
=0A=0A KeInitializeSpinLock(lock)=0A=0A kspin_lock *lock;=0A=0A =
{=0A=0A@@ -2814,7 +2917,7 @@=0A=0A for (i =3D 0; i < WORKITEM_THREADS; =
i++) {=0A=0A kq =3D wq_queues + i;=0A=0A kq->kq_exit =3D 1;=
=0A=0A- KeSetEvent(&kq->kq_proc, IO_NO_INCREMENT, FALSE); =0A=0A+=
KeSetEvent(&kq->kq_proc, IO_NO_INCREMENT, FALSE);=0A=0A whi=
le (kq->kq_exit)=0A=0A tsleep(kq->kq_td->td_proc, PWAIT, "waiti=
w", hz/10);=0A=0A }=0A=0A@@ -3182,7 +3285,10 @@=0A=0A uint8_t =
major;=0A=0A uint8_t minor;=0A=0A {=0A=0A- if (majo=
r =3D=3D WDM_MAJOR && minor =3D=3D WDM_MINOR_WINXP)=0A=0A+ if (major =3D=
=3D WDM_MAJOR && =0A=0A+ (minor =3D=3D WDM_MINOR_WIN2003 || /* =
Windows 2003 */=0A=0A+ minor =3D=3D WDM_MINOR_WINXP || /* Wind=
ows XP */=0A=0A+ minor =3D=3D WDM_MINOR_WIN2000)) /* Windows 2000=
*/=0A=0A return(TRUE);=0A=0A return(FALSE);=0A=0A }=0A=0A@@ -4=
218,6 +4324,7 @@=0A=0A IMPORT_CFUNC(strncmp, 0),=0A=0A IMPORT_CFUNC=
(strcmp, 0),=0A=0A IMPORT_CFUNC_MAP(stricmp, strcasecmp, 0),=0A=0A+ =
IMPORT_CFUNC_MAP(strncat, ntoskrnl_strncat, 0),=0A=0A IMPORT_CFUNC(strn=
cpy, 0),=0A=0A IMPORT_CFUNC(strcpy, 0),=0A=0A IMPORT_CFUNC(strlen, =
0),=0A=0A@@ -4229,6 +4336,7 @@=0A=0A IMPORT_CFUNC(memcpy, 0),=0A=0A =
IMPORT_CFUNC_MAP(memmove, ntoskrnl_memmove, 0),=0A=0A IMPORT_CFUNC_MAP=
(memset, ntoskrnl_memset, 0),=0A=0A+ IMPORT_CFUNC_MAP(memcmp, ntoskrnl_m=
emcmp, 0),=0A=0A IMPORT_CFUNC_MAP(memchr, ntoskrnl_memchr, 0),=0A=0A =
IMPORT_SFUNC(IoAllocateDriverObjectExtension, 4),=0A=0A IMPORT_SFUNC(=
IoGetDriverObjectExtension, 2),=0A=0A@@ -4290,8 +4398,12 @@=0A=0A I=
nterlockedPushEntrySList, 2),=0A=0A IMPORT_FFUNC(ExInterlockedPopEntryS=
List, 2),=0A=0A IMPORT_FFUNC(ExInterlockedPushEntrySList, 3),=0A=0A+ =
IMPORT_SFUNC(ExAllocatePool, 2),=0A=0A+ IMPORT_SFUNC(ExAllocatePoolWith=
Quota, 2),=0A=0A+ IMPORT_SFUNC(ExAllocatePoolWithQuotaTag, 3),=0A=0A =
IMPORT_SFUNC(ExAllocatePoolWithTag, 3),=0A=0A IMPORT_SFUNC(ExFreePool,=
1),=0A=0A+ IMPORT_SFUNC(ExFreePoolWithTag, 2),=0A=0A #ifdef __i386__=0A=
=0A IMPORT_FFUNC(KefAcquireSpinLockAtDpcLevel, 1),=0A=0A IMPORT_FFU=
NC(KefReleaseSpinLockFromDpcLevel,1),=0A=0A@@ -4336,6 +4448,7 @@=0A=0A =
IMPORT_SFUNC(IoQueueWorkItem, 4),=0A=0A IMPORT_SFUNC(ExQueueWorkItem, 2=
),=0A=0A IMPORT_SFUNC(ntoskrnl_workitem, 2),=0A=0A+ IMPORT_SFUNC(KeB=
ugCheckEx, 5),=0A=0A IMPORT_SFUNC(KeInitializeMutex, 2),=0A=0A IMPO=
RT_SFUNC(KeReleaseMutex, 2),=0A=0A IMPORT_SFUNC(KeReadStateMutex, 1),=
=0A=0A@@ -4365,6 +4478,8 @@=0A=0A IMPORT_SFUNC(IoWMIRegistrationControl=
, 2),=0A=0A IMPORT_SFUNC(WmiQueryTraceInformation, 5),=0A=0A IMPORT=
_CFUNC(WmiTraceMessage, 0),=0A=0A+ IMPORT_SFUNC(KeQuerySystemTime, 1),=
=0A=0A+ IMPORT_CFUNC(KeTickCount, 0),=0A=0A =0A=0A /*=0A=0A * T=
his last entry is a catch-all for any function we haven't=0A=0A=0A=0A=0A=0A=
=0A=0A-----Inline Attachment Follows-----=0A=0A=0A=0A____________=0A=0A=0AH=
ello Marcin,=0A=0ACould you please try this patch which modified by Mr. Sco=
t Hetzel please?=0A=0A=0A=0A-- =0A=0ARegards, =0A=0A-Abdullah Ibn Hamad Al-=
Marri=0A=0AArab Portal=0A=0Ahttp://www.WeArab.Net/=0A=0A=0A=0A=0A=0A=0A=0A=
=0A=0A=0A_________________________________________ _________=0ADo You Yahoo!=
?=0ATired of spam? Yahoo! Mail has the best spam protection around =0Ahttp=
://mail.yahoo.com
_______________________________________________
freebsd-mobile@freebsd.org mailing list
http://lists.freebsd.org/mailman/lis...freebsd-mobile
To unsubscribe, send any mail to "freebsd-mobile-unsubscribe@freebsd.org"