Ignore:
Timestamp:
Dec 5, 2014, 4:02:27 PM (10 years ago)
Author:
alain
Message:

1) replace the "giet_locks.c" library by the "user_lock.c" library (the new library uses a ticket allocator).
2) introduce new syscalls in the stdio.c file, to support the NIC peripheral.
3) modify the MWMR library to use the lock with ticket allocator, and to separate the fifo descriptor and the data buffer.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/giet_libs/stdio.c

    r450 r461  
    542542
    543543////////////////////////
    544 void giet_nic_rx_alloc()
    545 {
    546     if ( sys_call( SYSCALL_NIC_RX_ALLOC,
    547                    0, 0, 0, 0 ) ) giet_exit("error in giet_nic_rx_alloc()");
    548 }
    549 
    550 ////////////////////////
    551 void giet_nic_tx_alloc()
    552 {
    553     if ( sys_call( SYSCALL_NIC_TX_ALLOC,
    554                    0, 0, 0, 0 ) ) giet_exit("error in giet_nic_tx_alloc()");
     544int giet_nic_rx_alloc()
     545{
     546    int channel = sys_call( SYSCALL_NIC_ALLOC,
     547                            1,
     548                            0, 0, 0 );
     549    if ( channel < 0 ) giet_exit("error in giet_nic_tx_alloc()");
     550
     551    return channel;
     552}
     553
     554///////////////////////
     555int giet_nic_tx_alloc()
     556{
     557    int channel = sys_call( SYSCALL_NIC_ALLOC,
     558                            0,
     559                            0, 0, 0 );
     560    if ( channel < 0 ) giet_exit("error in giet_nic_tx_alloc()");
     561
     562    return channel;
    555563}
    556564
     
    558566void giet_nic_rx_start()
    559567{
    560     if ( sys_call( SYSCALL_NIC_RX_START,
    561                    0, 0, 0, 0 ) ) giet_exit("error in giet_nic_rx_start()");
     568    if ( sys_call( SYSCALL_NIC_START,
     569                   1,
     570                   0, 0, 0 ) ) giet_exit("error in giet_nic_rx_start()");
    562571}
    563572
     
    565574void giet_nic_tx_start()
    566575{
    567     if ( sys_call( SYSCALL_NIC_TX_START,
    568                    0, 0, 0, 0 ) ) giet_exit("error in giet_nic_tx_start()");
    569 }
    570 
    571 /////////////////////////////////////
    572 void giet_nic_rx_move( void* buffer )
    573 {
    574     if ( sys_call( SYSCALL_NIC_RX_MOVE,
     576    if ( sys_call( SYSCALL_NIC_START,
     577                   0,
     578                   0, 0, 0 ) ) giet_exit("error in giet_nic_tx_start()");
     579}
     580
     581///////////////////////////////////////////////////////////
     582void giet_nic_rx_move( unsigned int channel, void* buffer )
     583{
     584    if ( sys_call( SYSCALL_NIC_MOVE,
     585                   1,
     586                   channel,
    575587                   (unsigned int)buffer,
    576                    0, 0, 0 ) )  giet_exit("error in giet_nic_rx_move()");
    577 }
    578 
    579 /////////////////////////////////////
    580 void giet_nic_tx_move( void* buffer )
    581 {
    582     if ( sys_call( SYSCALL_NIC_TX_MOVE,
     588                   0 ) )  giet_exit("error in giet_nic_rx_move()");
     589}
     590
     591///////////////////////////////////////////////////////////
     592void giet_nic_tx_move( unsigned int channel, void* buffer )
     593{
     594    if ( sys_call( SYSCALL_NIC_MOVE,
     595                   0,
     596                   channel,
    583597                   (unsigned int)buffer,
    584                    0, 0, 0 ) )  giet_exit("error in giet_nic_tx_move()");
     598                   0 ) )  giet_exit("error in giet_nic_tx_move()");
     599}
     600
     601///////////////////////
     602void giet_nic_rx_stop()
     603{
     604    if ( sys_call( SYSCALL_NIC_STOP,
     605                   1,
     606                   0, 0, 0 ) ) giet_exit("error in giet_nic_rx_stop()");
     607}
     608
     609///////////////////////
     610void giet_nic_tx_stop()
     611{
     612    if ( sys_call( SYSCALL_NIC_STOP,
     613                   0,
     614                   0, 0, 0 ) ) giet_exit("error in giet_nic_tx_stop()");
    585615}
    586616
    587617////////////////////////
    588 void giet_nic_rx_stop()
    589 {
    590     if ( sys_call( SYSCALL_NIC_RX_STOP,
    591                    0, 0, 0, 0 ) ) giet_exit("error in giet_nic_rx_start()");
     618void giet_nic_rx_stats()
     619{
     620    if ( sys_call( SYSCALL_NIC_STATS,
     621                   1,
     622                   0, 0, 0 ) ) giet_exit("error in giet_nic_rx_stats()");
    592623}
    593624
    594625////////////////////////
    595 void giet_nic_tx_stop()
    596 {
    597     if ( sys_call( SYSCALL_NIC_TX_STOP,
    598                    0, 0, 0, 0 ) ) giet_exit("error in giet_nic_tx_start()");
    599 }
     626void giet_nic_tx_stats()
     627{
     628    if ( sys_call( SYSCALL_NIC_STATS,
     629                   0,
     630                   0, 0, 0 ) ) giet_exit("error in giet_nic_tx_stats()");
     631}
     632
     633////////////////////////
     634void giet_nic_rx_clear()
     635{
     636    if ( sys_call( SYSCALL_NIC_CLEAR,
     637                   1,
     638                   0, 0, 0 ) ) giet_exit("error in giet_nic_rx_clear()");
     639}
     640
     641////////////////////////
     642void giet_nic_tx_clear()
     643{
     644    if ( sys_call( SYSCALL_NIC_CLEAR,
     645                   0,
     646                   0, 0, 0 ) ) giet_exit("error in giet_nic_tx_clear()");
     647}
     648
    600649
    601650
Note: See TracChangeset for help on using the changeset viewer.