Changeset 79ae36dd in mainline for uspace/srv/vfs/vfs_file.c


Ignore:
Timestamp:
2011-06-08T19:01:55Z (14 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/vfs/vfs_file.c

    r764d71e r79ae36dd  
    4545#include "vfs.h"
    4646
    47 #define VFS_DATA        ((vfs_client_data_t *) async_client_data_get())
     47#define VFS_DATA        ((vfs_client_data_t *) async_get_client_data())
    4848#define FILES           (VFS_DATA->files)
    4949
     
    110110static int vfs_file_close_remote(vfs_file_t *file)
    111111{
     112        assert(!file->refcnt);
     113       
     114        async_exch_t *exch = vfs_exchange_grab(file->node->fs_handle);
     115       
    112116        ipc_call_t answer;
    113         aid_t msg;
     117        aid_t msg = async_send_2(exch, VFS_OUT_CLOSE, file->node->devmap_handle,
     118            file->node->index, &answer);
     119       
     120        vfs_exchange_release(exch);
     121       
    114122        sysarg_t rc;
    115         int phone;
    116 
    117         assert(!file->refcnt);
    118 
    119         phone = vfs_grab_phone(file->node->fs_handle);
    120         msg = async_send_2(phone, VFS_OUT_CLOSE, file->node->devmap_handle,
    121             file->node->index, &answer);
    122123        async_wait_for(msg, &rc);
    123         vfs_release_phone(file->node->fs_handle, phone);
    124 
     124       
    125125        return IPC_GET_ARG1(answer);
    126126}
    127 
    128127
    129128/** Increment reference count of VFS file structure.
Note: See TracChangeset for help on using the changeset viewer.