Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/include/ipc/net.h

    r64d2b10 r228e490  
    3838#define LIBC_NET_MESSAGES_H_
    3939
     40#include <ipc/ipc.h>
    4041#include <ipc/services.h>
     42
    4143#include <net/device.h>
    4244#include <net/packet.h>
    4345
    44 /** Return a value indicating whether the value is in the interval.
    45  *
    46  * @param[in] item            Value to be checked.
    47  * @param[in] first_inclusive First value in the interval inclusive.
    48  * @param[in] last_exclusive  First value after the interval.
    49  *
     46/** Returns a value indicating whether the value is in the interval.
     47 * @param[in] item      The value to be checked.
     48 * @param[in] first_inclusive The first value in the interval inclusive.
     49 * @param[in] last_exclusive The first value after the interval.
    5050 */
    5151#define IS_IN_INTERVAL(item, first_inclusive, last_exclusive) \
     
    5555/*@{*/
    5656
    57 #define NET_ARP_COUNT     5   /**< Number of ARP messages. */
    58 #define NET_ETH_COUNT     0   /**< Number of Ethernet messages. */
    59 #define NET_ICMP_COUNT    6   /**< Number of ICMP messages. */
    60 #define NET_IL_COUNT      6   /**< Number of inter-network messages. */
    61 #define NET_IP_COUNT      4   /**< Number of IP messages. */
    62 #define NET_NET_COUNT     3   /**< Number of general networking messages. */
    63 #define NET_NETIF_COUNT   6   /**< Number of network interface driver messages. */
    64 #define NET_NIL_COUNT     7   /**< Number of network interface layer messages. */
    65 #define NET_PACKET_COUNT  5   /**< Number of packet management system messages. */
    66 #define NET_SOCKET_COUNT  14  /**< Number of socket messages. */
    67 #define NET_TCP_COUNT     0   /**< Number of TCP messages. */
    68 #define NET_TL_COUNT      1   /**< Number of transport layer messages. */
    69 #define NET_UDP_COUNT     0   /**< Number of UDP messages. */
     57/** The number of ARP messages. */
     58#define NET_ARP_COUNT           5
     59
     60/** The number of Ethernet messages. */
     61#define NET_ETH_COUNT           0
     62
     63/** The number of ICMP messages. */
     64#define NET_ICMP_COUNT          6
     65
     66/** The number of inter-network messages. */
     67#define NET_IL_COUNT            6
     68
     69/** The number of IP messages. */
     70#define NET_IP_COUNT            4
     71
     72/** The number of general networking messages. */
     73#define NET_NET_COUNT           3
     74
     75/** The number of network interface driver messages. */
     76#define NET_NETIF_COUNT         6
     77
     78/** The number of network interface layer messages. */
     79#define NET_NIL_COUNT           7
     80
     81/** The number of packet management system messages. */
     82#define NET_PACKET_COUNT        5
     83
     84/** The number of socket messages. */
     85#define NET_SOCKET_COUNT        14
     86
     87/** The number of TCP messages. */
     88#define NET_TCP_COUNT           0
     89
     90/** The number of transport layer messages. */
     91#define NET_TL_COUNT            1
     92
     93/** The number of UDP messages. */
     94#define NET_UDP_COUNT           0
    7095
    7196/*@}*/
     
    75100/*@{*/
    76101
    77 
    78 /** First networking message. */
    79 #define NET_FIRST  2000
    80 
    81 /** First network interface layer message. */
    82 #define NET_NETIF_FIRST  NET_FIRST
    83 
    84 /** Last network interface layer message. */
    85 #define NET_NETIF_LAST  (NET_NETIF_FIRST + NET_NETIF_COUNT)
    86 
    87 /** First general networking message. */
    88 #define NET_NET_FIRST  (NET_NETIF_LAST + 0)
    89 
    90 /** Last general networking message. */
    91 #define NET_NET_LAST  (NET_NET_FIRST + NET_NET_COUNT)
    92 
    93 /** First network interface layer message. */
    94 #define NET_NIL_FIRST  (NET_NET_LAST + 0)
    95 
    96 /** Last network interface layer message. */
    97 #define NET_NIL_LAST  (NET_NIL_FIRST + NET_NIL_COUNT)
    98 
    99 /** First Ethernet message. */
    100 #define NET_ETH_FIRST  (NET_NIL_LAST + 0)
    101 
    102 /** Last Ethernet message. */
    103 #define NET_ETH_LAST  (NET_ETH_FIRST + NET_ETH_COUNT)
    104 
    105 /** First inter-network message. */
    106 #define NET_IL_FIRST  (NET_ETH_LAST + 0)
    107 
    108 /** Last inter-network message. */
    109 #define NET_IL_LAST  (NET_IL_FIRST + NET_IL_COUNT)
    110 
    111 /** First IP message. */
    112 #define NET_IP_FIRST  (NET_IL_LAST + 0)
    113 
    114 /** Last IP message. */
    115 #define NET_IP_LAST  (NET_IP_FIRST + NET_IP_COUNT)
    116 
    117 /** First ARP message. */
    118 #define NET_ARP_FIRST  (NET_IP_LAST + 0)
    119 
    120 /** Last ARP message. */
    121 #define NET_ARP_LAST  (NET_ARP_FIRST + NET_ARP_COUNT)
    122 
    123 /** First ICMP message. */
    124 #define NET_ICMP_FIRST  (NET_ARP_LAST + 0)
    125 
    126 /** Last ICMP message. */
    127 #define NET_ICMP_LAST  (NET_ICMP_FIRST + NET_ICMP_COUNT)
    128 
    129 /** First ICMP message. */
    130 #define NET_TL_FIRST  (NET_ICMP_LAST + 0)
    131 
    132 /** Last ICMP message. */
    133 #define NET_TL_LAST  (NET_TL_FIRST + NET_TL_COUNT)
    134 
    135 /** First UDP message. */
    136 #define NET_UDP_FIRST  (NET_TL_LAST + 0)
    137 
    138 /** Last UDP message. */
    139 #define NET_UDP_LAST  (NET_UDP_FIRST + NET_UDP_COUNT)
    140 
    141 /** First TCP message. */
    142 #define NET_TCP_FIRST  (NET_UDP_LAST + 0)
    143 
    144 /** Last TCP message. */
    145 #define NET_TCP_LAST  (NET_TCP_FIRST + NET_TCP_COUNT)
    146 
    147 /** First socket message. */
    148 #define NET_SOCKET_FIRST  (NET_TCP_LAST + 0)
    149 
    150 /** Last socket message. */
    151 #define NET_SOCKET_LAST  (NET_SOCKET_FIRST + NET_SOCKET_COUNT)
    152 
    153 /** First packet management system message. */
    154 #define NET_PACKET_FIRST  (NET_SOCKET_LAST + 0)
    155 
    156 /** Last packet management system message. */
    157 #define NET_PACKET_LAST  (NET_PACKET_FIRST + NET_PACKET_COUNT)
    158 
    159 /** Last networking message. */
    160 #define NET_LAST  NET_PACKET_LAST
    161 
    162 /** Number of networking messages. */
    163 #define NET_COUNT  (NET_LAST - NET_FIRST)
    164 
    165 /** Check if the IPC call is a generic networking message.
    166  *
    167  * @param[in] call IPC call to be checked.
    168  *
     102/** The first networking message. */
     103#define NET_FIRST               2000
     104
     105/** The first network interface layer message. */
     106#define NET_NETIF_FIRST         NET_FIRST
     107
     108/** The last network interface layer message. */
     109#define NET_NETIF_LAST          (NET_NETIF_FIRST + NET_NETIF_COUNT)
     110
     111/** The first general networking message. */
     112#define NET_NET_FIRST           (NET_NETIF_LAST + 0)
     113
     114/** The last general networking message. */
     115#define NET_NET_LAST            (NET_NET_FIRST + NET_NET_COUNT)
     116
     117/** The first network interface layer message. */
     118#define NET_NIL_FIRST           (NET_NET_LAST + 0)
     119
     120/** The last network interface layer message. */
     121#define NET_NIL_LAST            (NET_NIL_FIRST + NET_NIL_COUNT)
     122
     123/** The first Ethernet message. */
     124#define NET_ETH_FIRST           (NET_NIL_LAST + 0)
     125
     126/** The last Ethernet message. */
     127#define NET_ETH_LAST            (NET_ETH_FIRST + NET_ETH_COUNT)
     128
     129/** The first inter-network message. */
     130#define NET_IL_FIRST            (NET_ETH_LAST + 0)
     131
     132/** The last inter-network message. */
     133#define NET_IL_LAST             (NET_IL_FIRST + NET_IL_COUNT)
     134
     135/** The first IP message. */
     136#define NET_IP_FIRST            (NET_IL_LAST + 0)
     137
     138/** The last IP message. */
     139#define NET_IP_LAST             (NET_IP_FIRST + NET_IP_COUNT)
     140
     141/** The first ARP message. */
     142#define NET_ARP_FIRST           (NET_IP_LAST + 0)
     143
     144/** The last ARP message. */
     145#define NET_ARP_LAST            (NET_ARP_FIRST + NET_ARP_COUNT)
     146
     147/** The first ICMP message. */
     148#define NET_ICMP_FIRST          (NET_ARP_LAST + 0)
     149
     150/** The last ICMP message. */
     151#define NET_ICMP_LAST           (NET_ICMP_FIRST + NET_ICMP_COUNT)
     152
     153/** The first ICMP message. */
     154#define NET_TL_FIRST            (NET_ICMP_LAST + 0)
     155
     156/** The last ICMP message. */
     157#define NET_TL_LAST             (NET_TL_FIRST + NET_TL_COUNT)
     158
     159/** The first UDP message. */
     160#define NET_UDP_FIRST           (NET_TL_LAST + 0)
     161
     162/** The last UDP message. */
     163#define NET_UDP_LAST            (NET_UDP_FIRST + NET_UDP_COUNT)
     164
     165/** The first TCP message. */
     166#define NET_TCP_FIRST           (NET_UDP_LAST + 0)
     167
     168/** The last TCP message. */
     169#define NET_TCP_LAST            (NET_TCP_FIRST + NET_TCP_COUNT)
     170
     171/** The first socket message. */
     172#define NET_SOCKET_FIRST        (NET_TCP_LAST + 0)
     173
     174/** The last socket message. */
     175#define NET_SOCKET_LAST         (NET_SOCKET_FIRST + NET_SOCKET_COUNT)
     176
     177/** The first packet management system message. */
     178#define NET_PACKET_FIRST        (NET_SOCKET_LAST + 0)
     179
     180/** The last packet management system message. */
     181#define NET_PACKET_LAST         (NET_PACKET_FIRST + NET_PACKET_COUNT)
     182
     183/** The last networking message. */
     184#define NET_LAST                NET_PACKET_LAST
     185
     186/** The number of networking messages. */
     187#define NET_COUNT               (NET_LAST - NET_FIRST)
     188
     189/** Returns a value indicating whether the IPC call is a generic networking
     190 * message.
     191 * @param[in] call The IPC call to be checked.
    169192 */
    170193#define IS_NET_MESSAGE(call) \
    171         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_FIRST, NET_LAST)
    172 
    173 /** Check if the IPC call is an ARP message.
    174  *
    175  * @param[in] call IPC call to be checked.
    176  *
     194        IS_IN_INTERVAL(IPC_GET_IMETHOD(*call), NET_FIRST, NET_LAST)
     195
     196/** Returns a value indicating whether the IPC call is an ARP message.
     197 * @param[in] call The IPC call to be checked.
    177198 */
    178199#define IS_NET_ARP_MESSAGE(call) \
    179         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_ARP_FIRST, NET_ARP_LAST)
    180 
    181 /** Check if the IPC call is an Ethernet message.
    182  *
    183  * @param[in] call IPC call to be checked.
    184  *
     200        IS_IN_INTERVAL(IPC_GET_IMETHOD(*call), NET_ARP_FIRST, NET_ARP_LAST)
     201
     202/** Returns a value indicating whether the IPC call is an Ethernet message.
     203 * @param[in] call The IPC call to be checked.
    185204 */
    186205#define IS_NET_ETH_MESSAGE(call) \
    187         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_ETH_FIRST, NET_ETH_LAST)
    188 
    189 /** Check if the IPC call is an ICMP message.
    190  *
    191  * @param[in] call IPC call to be checked.
    192  *
     206        IS_IN_INTERVAL(IPC_GET_IMETHOD(*call), NET_ETH_FIRST, NET_ETH_LAST)
     207
     208/** Returns a value indicating whether the IPC call is an ICMP message.
     209 * @param[in] call The IPC call to be checked.
    193210 */
    194211#define IS_NET_ICMP_MESSAGE(call) \
    195         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_ICMP_FIRST, NET_ICMP_LAST)
    196 
    197 /** Check if the IPC call is an inter-network layer message.
    198  *
    199  * @param[in] call IPC call to be checked.
    200  *
     212        IS_IN_INTERVAL(IPC_GET_IMETHOD(*call), NET_ICMP_FIRST, NET_ICMP_LAST)
     213
     214/** Returns a value indicating whether the IPC call is an inter-network layer
     215 * message.
     216 * @param[in] call The IPC call to be checked.
    201217 */
    202218#define IS_NET_IL_MESSAGE(call) \
    203         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_IL_FIRST, NET_IL_LAST)
    204 
    205 /** Check if the IPC call is an IP message.
    206  *
    207  * @param[in] call IPC call to be checked.
    208  *
     219        IS_IN_INTERVAL(IPC_GET_IMETHOD(*call), NET_IL_FIRST, NET_IL_LAST)
     220
     221/** Returns a value indicating whether the IPC call is an IP message.
     222 * @param[in] call The IPC call to be checked.
    209223 */
    210224#define IS_NET_IP_MESSAGE(call) \
    211         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_IP_FIRST, NET_IP_LAST)
    212 
    213 /** Check if the IPC call is a generic networking message.
    214  *
    215  * @param[in] call IPC call to be checked.
    216  *
     225        IS_IN_INTERVAL(IPC_GET_IMETHOD(*call), NET_IP_FIRST, NET_IP_LAST)
     226
     227/** Returns a value indicating whether the IPC call is a generic networking
     228 * message.
     229 * @param[in] call The IPC call to be checked.
    217230 */
    218231#define IS_NET_NET_MESSAGE(call) \
    219         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_NET_FIRST, NET_NET_LAST)
    220 
    221 /** Check if the IPC call is a network interface layer message.
    222  *
    223  * @param[in] call IPC call to be checked.
    224  *
     232        IS_IN_INTERVAL(IPC_GET_IMETHOD(*call), NET_NET_FIRST, NET_NET_LAST)
     233
     234/** Returns a value indicating whether the IPC call is a network interface layer
     235 * message.
     236 * @param[in] call The IPC call to be checked.
    225237 */
    226238#define IS_NET_NIL_MESSAGE(call) \
    227         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_NIL_FIRST, NET_NIL_LAST)
    228 
    229 /** Check if the IPC call is a packet manaagement system message.
    230  *
    231  * @param[in] call IPC call to be checked.
    232  *
     239        IS_IN_INTERVAL(IPC_GET_IMETHOD(*call), NET_NIL_FIRST, NET_NIL_LAST)
     240
     241/** Returns a value indicating whether the IPC call is a packet manaagement
     242 * system message.
     243 * @param[in] call The IPC call to be checked.
    233244 */
    234245#define IS_NET_PACKET_MESSAGE(call) \
    235         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_PACKET_FIRST, NET_PACKET_LAST)
    236 
    237 /** Check if the IPC call is a socket message.
    238  *
    239  * @param[in] call IPC call to be checked.
    240  *
     246        IS_IN_INTERVAL(IPC_GET_IMETHOD(*call), NET_PACKET_FIRST, NET_PACKET_LAST)
     247
     248/** Returns a value indicating whether the IPC call is a socket message.
     249 * @param[in] call The IPC call to be checked.
    241250 */
    242251#define IS_NET_SOCKET_MESSAGE(call) \
    243         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_SOCKET_FIRST, NET_SOCKET_LAST)
    244 
    245 /** Check if the IPC call is a TCP message.
    246  *
    247  * @param[in] call IPC call to be checked.
    248  *
     252        IS_IN_INTERVAL(IPC_GET_IMETHOD(*call), NET_SOCKET_FIRST, NET_SOCKET_LAST)
     253
     254/** Returns a value indicating whether the IPC call is a TCP message.
     255 * @param[in] call The IPC call to be checked.
    249256 */
    250257#define IS_NET_TCP_MESSAGE(call) \
    251         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_TCP_FIRST, NET_TCP_LAST)
    252 
    253 /** Check if the IPC call is a transport layer message.
    254  *
    255  * @param[in] call IPC call to be checked.
    256  *
     258        IS_IN_INTERVAL(IPC_GET_IMETHOD(*call), NET_TCP_FIRST, NET_TCP_LAST)
     259
     260/** Returns a value indicating whether the IPC call is a transport layer message.
     261 * @param[in] call The IPC call to be checked.
    257262 */
    258263#define IS_NET_TL_MESSAGE(call) \
    259         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_TL_FIRST, NET_TL_LAST)
    260 
    261 /** Check if the IPC call is a UDP message.
    262  *
    263  * @param[in] call IPC call to be checked.
    264  *
     264        IS_IN_INTERVAL(IPC_GET_IMETHOD(*call), NET_TL_FIRST, NET_TL_LAST)
     265
     266/** Returns a value indicating whether the IPC call is a UDP message.
     267 * @param[in] call The IPC call to be checked.
    265268 */
    266269#define IS_NET_UDP_MESSAGE(call) \
    267         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_UDP_FIRST, NET_UDP_LAST)
     270        IS_IN_INTERVAL(IPC_GET_IMETHOD(*call), NET_UDP_FIRST, NET_UDP_LAST)
    268271
    269272/*@}*/
     
    272275/*@{*/
    273276
    274 /** Return the device identifier message argument.
    275  *
    276  * @param[in] call Message call structure.
    277  *
    278  */
    279 #define IPC_GET_DEVICE(call)  ((device_id_t) IPC_GET_ARG1(call))
    280 
    281 /** Return the packet identifier message argument.
    282  *
    283  * @param[in] call Message call structure.
    284  *
    285  */
    286 #define IPC_GET_PACKET(call)  ((packet_id_t) IPC_GET_ARG2(call))
    287 
    288 /** Return the count message argument.
    289  *
    290  * @param[in] call Message call structure.
    291  *
    292  */
    293 #define IPC_GET_COUNT(call)  ((size_t) IPC_GET_ARG2(call))
    294 
    295 /** Return the device state message argument.
    296  *
    297  * @param[in] call Message call structure.
    298  *
    299  */
    300 #define IPC_GET_STATE(call)  ((device_state_t) IPC_GET_ARG2(call))
    301 
    302 /** Return the maximum transmission unit message argument.
    303  *
    304  * @param[in] call Message call structure.
    305  *
    306  */
    307 #define IPC_GET_MTU(call)  ((size_t) IPC_GET_ARG2(call))
    308 
    309 /** Return the device driver service message argument.
    310  *
    311  * @param[in] call Message call structure.
    312  *
    313  */
    314 #define IPC_GET_SERVICE(call)  ((services_t) IPC_GET_ARG3(call))
    315 
    316 /** Return the target service message argument.
    317  *
    318  * @param[in] call Message call structure.
    319  *
    320  */
    321 #define IPC_GET_TARGET(call)  ((services_t) IPC_GET_ARG3(call))
    322 
    323 /** Return the sender service message argument.
    324  *
    325  * @param[in] call Message call structure.
    326  *
    327  */
    328 #define IPC_GET_SENDER(call)  ((services_t) IPC_GET_ARG3(call))
    329 
    330 /** Return the error service message argument.
    331  &
    332  * @param[in] call Message call structure.
    333  *
    334  */
    335 #define IPC_GET_ERROR(call)  ((services_t) IPC_GET_ARG4(call))
    336 
    337 /** Return the phone message argument.
    338  *
    339  * @param[in] call Message call structure.
    340  *
    341  */
    342 #define IPC_GET_PHONE(call)  ((int) IPC_GET_ARG5(call))
    343 
    344 /** Set the device identifier in the message answer.
    345  *
    346  * @param[out] answer Message answer structure.
    347  * @param[in]  value  Value to set.
    348  *
    349  */
    350 #define IPC_SET_DEVICE(answer, value)  IPC_SET_ARG1(answer, (sysarg_t) (value))
    351 
    352 /** Set the minimum address length in the message answer.
    353  *
    354  * @param[out] answer Message answer structure.
    355  * @param[in]  value  Value to set.
    356  *
    357  */
    358 #define IPC_SET_ADDR(answer, value)  IPC_SET_ARG1(answer, (sysarg_t) (value))
    359 
    360 /** Set the minimum prefix size in the message answer.
    361  *
    362  * @param[out] answer Message answer structure.
    363  * @param[in]  value  Value to set.
    364  *
    365  */
    366 #define IPC_SET_PREFIX(answer, value)  IPC_SET_ARG2(answer, (sysarg_t) (value))
    367 
    368 /** Set the maximum content size in the message answer.
    369  *
    370  * @param[out] answer Message answer structure.
    371  * @param[in]  value  Value to set.
    372  *
    373  */
    374 #define IPC_SET_CONTENT(answer, value)  IPC_SET_ARG3(answer, (sysarg_t) (value))
    375 
    376 /** Set the minimum suffix size in the message answer.
    377  *
    378  * @param[out] answer Message answer structure.
    379  * @param[in]  value  Value to set.
    380  *
    381  */
    382 #define IPC_SET_SUFFIX(answer, value)  IPC_SET_ARG4(answer, (sysarg_t) (value))
     277/** Returns the device identifier message argument.
     278 * @param[in] call The message call structure.
     279 */
     280#define IPC_GET_DEVICE(call) \
     281        ({ \
     282                device_id_t device_id = (device_id_t) IPC_GET_ARG1(*call); \
     283                device_id; \
     284        })
     285
     286/** Returns the packet identifier message argument.
     287 * @param[in] call The message call structure.
     288 */
     289#define IPC_GET_PACKET(call) \
     290        ({ \
     291                packet_id_t packet_id = (packet_id_t) IPC_GET_ARG2(*call); \
     292                packet_id; \
     293        })
     294
     295/** Returns the count message argument.
     296 * @param[in] call The message call structure.
     297 */
     298#define IPC_GET_COUNT(call) \
     299        ({ \
     300                size_t size = (size_t) IPC_GET_ARG2(*call); \
     301                size; \
     302        })
     303
     304/** Returns the device state message argument.
     305 * @param[in] call The message call structure.
     306 */
     307#define IPC_GET_STATE(call) \
     308        ({ \
     309                device_state_t state = (device_state_t) IPC_GET_ARG2(*call); \
     310                state; \
     311        })
     312
     313/** Returns the maximum transmission unit message argument.
     314 * @param[in] call The message call structure.
     315 */
     316#define IPC_GET_MTU(call) \
     317        ({ \
     318                size_t size = (size_t) IPC_GET_ARG2(*call); \
     319                size; \
     320        })
     321
     322/** Returns the device driver service message argument.
     323 * @param[in] call The message call structure.
     324 */
     325#define IPC_GET_SERVICE(call) \
     326        ({ \
     327                services_t service = (services_t) IPC_GET_ARG3(*call); \
     328                service; \
     329        })
     330
     331/** Returns the target service message argument.
     332 * @param[in] call The message call structure.
     333 */
     334#define IPC_GET_TARGET(call) \
     335        ({ \
     336                services_t service = (services_t) IPC_GET_ARG3(*call); \
     337                service; \
     338        })
     339
     340/** Returns the sender service message argument.
     341 * @param[in] call The message call structure.
     342 */
     343#define IPC_GET_SENDER(call) \
     344        ({ \
     345                services_t service = (services_t) IPC_GET_ARG3(*call); \
     346                service; \
     347        })
     348
     349/** Returns the error service message argument.
     350 * @param[in] call The message call structure.
     351 */
     352#define IPC_GET_ERROR(call) \
     353        ({ \
     354                services_t service = (services_t) IPC_GET_ARG4(*call); \
     355                service; \
     356        })
     357
     358/** Returns the phone message argument.
     359 * @param[in] call The message call structure.
     360 */
     361#define IPC_GET_PHONE(call) \
     362        ({ \
     363                int phone = (int) IPC_GET_ARG5(*call); \
     364                phone; \
     365        })
     366
     367/** Sets the device identifier in the message answer.
     368 * @param[out] answer The message answer structure.
     369 */
     370#define IPC_SET_DEVICE(answer, value) \
     371        do { \
     372                sysarg_t argument = (sysarg_t) (value); \
     373                IPC_SET_ARG1(*answer, argument); \
     374        } while (0)
     375
     376/** Sets the minimum address length in the message answer.
     377 * @param[out] answer The message answer structure.
     378 */
     379#define IPC_SET_ADDR(answer, value) \
     380        do { \
     381                sysarg_t argument = (sysarg_t) (value); \
     382                IPC_SET_ARG1(*answer, argument); \
     383        } while (0)
     384
     385/** Sets the minimum prefix size in the message answer.
     386 * @param[out] answer The message answer structure.
     387 */
     388#define IPC_SET_PREFIX(answer, value) \
     389        do { \
     390                sysarg_t argument = (sysarg_t) (value); \
     391                IPC_SET_ARG2(*answer, argument); \
     392        } while (0)
     393
     394/** Sets the maximum content size in the message answer.
     395 * @param[out] answer The message answer structure.
     396 */
     397#define IPC_SET_CONTENT(answer, value) \
     398        do { \
     399                sysarg_t argument = (sysarg_t) (value); \
     400                IPC_SET_ARG3(*answer, argument); \
     401        } while (0)
     402
     403/** Sets the minimum suffix size in the message answer.
     404 * @param[out] answer The message answer structure.
     405 */
     406#define IPC_SET_SUFFIX(answer, value) \
     407        do { \
     408                sysarg_t argument = (sysarg_t) (value); \
     409                IPC_SET_ARG4(*answer, argument); \
     410        } while (0)
    383411
    384412/*@}*/
Note: See TracChangeset for help on using the changeset viewer.