Thread View: comp.os.os2.programmer
2 messages
2 total messages
Started by Eric Sassaman
Tue, 18 Sep 1990 02:43
IOPL in 2.0
Author: Eric Sassaman
Date: Tue, 18 Sep 1990 02:43
Date: Tue, 18 Sep 1990 02:43
20 lines
1374 bytes
1374 bytes
> I recently tried to experience the IOPL segment in OS/2 2.0. By > setting IOPL=YES in the config.sys file. By declairing SEGMENTS > IO_TEXT IOPL in the definition file. Writting an IO_TEXT segment with > priviledge instruction in assembly routine. Made a dummy c file which > essencially calls the assembly routine. Generated an EXE file to run. > The executable always give me a page fault error. Does anybody knows > if the IOPL segment exist and runs reliablly in the OS/2 2.0 > environment(386 CPU). It will be appreciated that if you can tell me > how to write such program. The problem is that port I/O from an OS/2 2.0 32-bit application is only allowed in a ring zero code segment. An IOPL segment runs at ring 2; at this level port I/O is not allowed in a 32-bit application. In order for you to do direct port I/O under OS/2 2.0, you will need to either write your application as 16-bit or write a device driver that runs at ring 0. This device driver can be either 16 bit or 32 bit. Eric Sassaman Microsoft OS/2 Systems Support
Re: IOPL in 2.0
Author: Todd Crowe
Date: Thu, 20 Sep 1990 18:19
Date: Thu, 20 Sep 1990 18:19
32 lines
2414 bytes
2414 bytes
ericsa@microsoft.UUCP (Eric Sassaman) writes:
>The problem is that port I/O from an OS/2 2.0 32-bit application is
>only allowed in a ring zero code segment. An IOPL segment runs at ring
>2; at this level port I/O is not allowed in a 32-bit application. In
>order for you to do direct port I/O under OS/2 2.0, you will need to
>either write your application as 16-bit or write a device driver that
>runs at ring 0. This device driver can be either 16 bit or 32 bit.
I won't deny that any of this is true, but I *think* it omits an important
point. About 6(?) monthes ago in either Computer Language or DR Dobbs there
was an article on using IOPL segments to read/write the I/O ports. It
mentioned that there was a function that enabled/disabled port access (even
to IOPL segments). In OS/2 1.x this function didn't do anything, since the
286 is not able to offer individual I/O ports (and disallow others). But
according to the article there were supposed to be required in OS/2 2.0.
I think the name of the function was DosEnablePortAccess (or something
similar). If this isn't enough information let me know and I can look
up the article.
+++++++++++++++ "Dont get your hair in an uproar!!!"
+++++ +@+++++++++++++ +-----------------------------------------------------+
+++++ +++Western+++++ | Todd Crowe |
+++++++Washington+++ | n8840371@unicorn.wwu.edu or TODDC@nessie.wwu.edu |
+++++++University+++ | (Finally a real .sig!) |
+++++++++++++++++++ +-----------------------------------------------------+
++++++++++ "There's more than one way to skin a cat..."
--
+++++++++++++++ "Dont get your hair in an uproar!!!"
+++++ +@+++++++++++++ +-----------------------------------------------------+
+++++ +++Western+++++ | Todd Crowe |
+++++++Washington+++ | n8840371@unicorn.wwu.edu or TODDC@nessie.wwu.edu |
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads