Changeset 79ae36dd in mainline for uspace/srv/hw/irc/i8259/i8259.c


Ignore:
Timestamp:
2011-06-08T19:01:55Z (13 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0eff68e
Parents:
764d71e
Message:

new async framework with integrated exchange tracking

  • strict isolation between low-level IPC and high-level async framework with integrated exchange tracking
    • each IPC connection is represented by an async_sess_t structure
    • each IPC exchange is represented by an async_exch_t structure
    • exchange management is either based on atomic messages (EXCHANGE_ATOMIC), locking (EXCHANGE_SERIALIZE) or connection cloning (EXCHANGE_CLONE)
  • async_obsolete: temporary compatibility layer to keep old async clients working (several pieces of code are currently broken, but only non-essential functionality)
  • IPC_M_PHONE_HANGUP is now method no. 0 (for elegant boolean evaluation)
  • IPC_M_DEBUG_ALL has been renamed to IPC_M_DEBUG
  • IPC_M_PING has been removed (VFS protocol now has VFS_IN_PING)
  • console routines in libc have been rewritten for better abstraction
  • additional use for libc-private header files (FILE structure opaque to the client)
  • various cstyle changes (typos, indentation, missing externs in header files, improved comments, etc.)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hw/irc/i8259/i8259.c

    r764d71e r79ae36dd  
    3838#include <ipc/services.h>
    3939#include <ipc/irc.h>
    40 #include <ipc/ns.h>
     40#include <ns.h>
    4141#include <sysinfo.h>
    4242#include <as.h>
     
    113113                callid = async_get_call(&call);
    114114               
     115                if (!IPC_GET_IMETHOD(call)) {
     116                        /* The other side has hung up. */
     117                        async_answer_0(callid, EOK);
     118                        return;
     119                }
     120               
    115121                switch (IPC_GET_IMETHOD(call)) {
    116122                case IRC_ENABLE_INTERRUPT:
     
    121127                        async_answer_0(callid, EOK);
    122128                        break;
    123                 case IPC_M_PHONE_HUNGUP:
    124                         /* The other side has hung up. */
    125                         async_answer_0(callid, EOK);
    126                         return;
    127129                default:
    128130                        async_answer_0(callid, EINVAL);
     
    140142       
    141143        if ((sysinfo_get_value("i8259", &i8259) != EOK) || (!i8259)) {
    142                 printf(NAME ": No i8259 found\n");
     144                printf("%s: No i8259 found\n", NAME);
    143145                return false;
    144146        }
     
    148150            (pio_enable((void *) IO_RANGE1_START, IO_RANGE1_SIZE,
    149151            (void **) &io_range1) != EOK)) {
    150                 printf(NAME ": i8259 not accessible\n");
     152                printf("%s: i8259 not accessible\n", NAME);
    151153                return false;
    152154        }
     
    160162int main(int argc, char **argv)
    161163{
    162         printf(NAME ": HelenOS i8259 driver\n");
     164        printf("%s: HelenOS i8259 driver\n", NAME);
    163165       
    164166        if (!i8259_init())
    165167                return -1;
    166168       
    167         printf(NAME ": Accepting connections\n");
     169        printf("%s: Accepting connections\n", NAME);
     170        task_retval(0);
    168171        async_manager();
    169172       
Note: See TracChangeset for help on using the changeset viewer.