Ignore:
File:
1 edited

Legend:

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

    r774e6d1a r228e490  
    4444#include <net/packet.h>
    4545
    46 /** Return a value indicating whether the value is in the interval.
    47  *
    48  * @param[in] item            Value to be checked.
    49  * @param[in] first_inclusive First value in the interval inclusive.
    50  * @param[in] last_exclusive  First value after the interval.
    51  *
     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.
    5250 */
    5351#define IS_IN_INTERVAL(item, first_inclusive, last_exclusive) \
     
    5755/*@{*/
    5856
    59 #define NET_ARP_COUNT     5   /**< Number of ARP messages. */
    60 #define NET_ETH_COUNT     0   /**< Number of Ethernet messages. */
    61 #define NET_ICMP_COUNT    6   /**< Number of ICMP messages. */
    62 #define NET_IL_COUNT      6   /**< Number of inter-network messages. */
    63 #define NET_IP_COUNT      4   /**< Number of IP messages. */
    64 #define NET_NET_COUNT     3   /**< Number of general networking messages. */
    65 #define NET_NETIF_COUNT   6   /**< Number of network interface driver messages. */
    66 #define NET_NIL_COUNT     7   /**< Number of network interface layer messages. */
    67 #define NET_PACKET_COUNT  5   /**< Number of packet management system messages. */
    68 #define NET_SOCKET_COUNT  14  /**< Number of socket messages. */
    69 #define NET_TCP_COUNT     0   /**< Number of TCP messages. */
    70 #define NET_TL_COUNT      1   /**< Number of transport layer messages. */
    71 #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
    7295
    7396/*@}*/
     
    77100/*@{*/
    78101
    79 
    80 /** First networking message. */
    81 #define NET_FIRST  2000
    82 
    83 /** First network interface layer message. */
    84 #define NET_NETIF_FIRST  NET_FIRST
    85 
    86 /** Last network interface layer message. */
    87 #define NET_NETIF_LAST  (NET_NETIF_FIRST + NET_NETIF_COUNT)
    88 
    89 /** First general networking message. */
    90 #define NET_NET_FIRST  (NET_NETIF_LAST + 0)
    91 
    92 /** Last general networking message. */
    93 #define NET_NET_LAST  (NET_NET_FIRST + NET_NET_COUNT)
    94 
    95 /** First network interface layer message. */
    96 #define NET_NIL_FIRST  (NET_NET_LAST + 0)
    97 
    98 /** Last network interface layer message. */
    99 #define NET_NIL_LAST  (NET_NIL_FIRST + NET_NIL_COUNT)
    100 
    101 /** First Ethernet message. */
    102 #define NET_ETH_FIRST  (NET_NIL_LAST + 0)
    103 
    104 /** Last Ethernet message. */
    105 #define NET_ETH_LAST  (NET_ETH_FIRST + NET_ETH_COUNT)
    106 
    107 /** First inter-network message. */
    108 #define NET_IL_FIRST  (NET_ETH_LAST + 0)
    109 
    110 /** Last inter-network message. */
    111 #define NET_IL_LAST  (NET_IL_FIRST + NET_IL_COUNT)
    112 
    113 /** First IP message. */
    114 #define NET_IP_FIRST  (NET_IL_LAST + 0)
    115 
    116 /** Last IP message. */
    117 #define NET_IP_LAST  (NET_IP_FIRST + NET_IP_COUNT)
    118 
    119 /** First ARP message. */
    120 #define NET_ARP_FIRST  (NET_IP_LAST + 0)
    121 
    122 /** Last ARP message. */
    123 #define NET_ARP_LAST  (NET_ARP_FIRST + NET_ARP_COUNT)
    124 
    125 /** First ICMP message. */
    126 #define NET_ICMP_FIRST  (NET_ARP_LAST + 0)
    127 
    128 /** Last ICMP message. */
    129 #define NET_ICMP_LAST  (NET_ICMP_FIRST + NET_ICMP_COUNT)
    130 
    131 /** First ICMP message. */
    132 #define NET_TL_FIRST  (NET_ICMP_LAST + 0)
    133 
    134 /** Last ICMP message. */
    135 #define NET_TL_LAST  (NET_TL_FIRST + NET_TL_COUNT)
    136 
    137 /** First UDP message. */
    138 #define NET_UDP_FIRST  (NET_TL_LAST + 0)
    139 
    140 /** Last UDP message. */
    141 #define NET_UDP_LAST  (NET_UDP_FIRST + NET_UDP_COUNT)
    142 
    143 /** First TCP message. */
    144 #define NET_TCP_FIRST  (NET_UDP_LAST + 0)
    145 
    146 /** Last TCP message. */
    147 #define NET_TCP_LAST  (NET_TCP_FIRST + NET_TCP_COUNT)
    148 
    149 /** First socket message. */
    150 #define NET_SOCKET_FIRST  (NET_TCP_LAST + 0)
    151 
    152 /** Last socket message. */
    153 #define NET_SOCKET_LAST  (NET_SOCKET_FIRST + NET_SOCKET_COUNT)
    154 
    155 /** First packet management system message. */
    156 #define NET_PACKET_FIRST  (NET_SOCKET_LAST + 0)
    157 
    158 /** Last packet management system message. */
    159 #define NET_PACKET_LAST  (NET_PACKET_FIRST + NET_PACKET_COUNT)
    160 
    161 /** Last networking message. */
    162 #define NET_LAST  NET_PACKET_LAST
    163 
    164 /** Number of networking messages. */
    165 #define NET_COUNT  (NET_LAST - NET_FIRST)
    166 
    167 /** Check if the IPC call is a generic networking message.
    168  *
    169  * @param[in] call IPC call to be checked.
    170  *
     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.
    171192 */
    172193#define IS_NET_MESSAGE(call) \
    173         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_FIRST, NET_LAST)
    174 
    175 /** Check if the IPC call is an ARP message.
    176  *
    177  * @param[in] call IPC call to be checked.
    178  *
     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.
    179198 */
    180199#define IS_NET_ARP_MESSAGE(call) \
    181         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_ARP_FIRST, NET_ARP_LAST)
    182 
    183 /** Check if the IPC call is an Ethernet message.
    184  *
    185  * @param[in] call IPC call to be checked.
    186  *
     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.
    187204 */
    188205#define IS_NET_ETH_MESSAGE(call) \
    189         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_ETH_FIRST, NET_ETH_LAST)
    190 
    191 /** Check if the IPC call is an ICMP message.
    192  *
    193  * @param[in] call IPC call to be checked.
    194  *
     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.
    195210 */
    196211#define IS_NET_ICMP_MESSAGE(call) \
    197         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_ICMP_FIRST, NET_ICMP_LAST)
    198 
    199 /** Check if the IPC call is an inter-network layer message.
    200  *
    201  * @param[in] call IPC call to be checked.
    202  *
     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.
    203217 */
    204218#define IS_NET_IL_MESSAGE(call) \
    205         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_IL_FIRST, NET_IL_LAST)
    206 
    207 /** Check if the IPC call is an IP message.
    208  *
    209  * @param[in] call IPC call to be checked.
    210  *
     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.
    211223 */
    212224#define IS_NET_IP_MESSAGE(call) \
    213         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_IP_FIRST, NET_IP_LAST)
    214 
    215 /** Check if the IPC call is a generic networking message.
    216  *
    217  * @param[in] call IPC call to be checked.
    218  *
     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.
    219230 */
    220231#define IS_NET_NET_MESSAGE(call) \
    221         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_NET_FIRST, NET_NET_LAST)
    222 
    223 /** Check if the IPC call is a network interface layer message.
    224  *
    225  * @param[in] call IPC call to be checked.
    226  *
     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.
    227237 */
    228238#define IS_NET_NIL_MESSAGE(call) \
    229         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_NIL_FIRST, NET_NIL_LAST)
    230 
    231 /** Check if the IPC call is a packet manaagement system message.
    232  *
    233  * @param[in] call IPC call to be checked.
    234  *
     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.
    235244 */
    236245#define IS_NET_PACKET_MESSAGE(call) \
    237         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_PACKET_FIRST, NET_PACKET_LAST)
    238 
    239 /** Check if the IPC call is a socket message.
    240  *
    241  * @param[in] call IPC call to be checked.
    242  *
     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.
    243250 */
    244251#define IS_NET_SOCKET_MESSAGE(call) \
    245         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_SOCKET_FIRST, NET_SOCKET_LAST)
    246 
    247 /** Check if the IPC call is a TCP message.
    248  *
    249  * @param[in] call IPC call to be checked.
    250  *
     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.
    251256 */
    252257#define IS_NET_TCP_MESSAGE(call) \
    253         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_TCP_FIRST, NET_TCP_LAST)
    254 
    255 /** Check if the IPC call is a transport layer message.
    256  *
    257  * @param[in] call IPC call to be checked.
    258  *
     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.
    259262 */
    260263#define IS_NET_TL_MESSAGE(call) \
    261         IS_IN_INTERVAL(IPC_GET_IMETHOD(call), NET_TL_FIRST, NET_TL_LAST)
    262 
    263 /** Check if the IPC call is a UDP message.
    264  *
    265  * @param[in] call IPC call to be checked.
    266  *
     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.
    267268 */
    268269#define IS_NET_UDP_MESSAGE(call) \
    269         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)
    270271
    271272/*@}*/
     
    274275/*@{*/
    275276
    276 /** Return the device identifier message argument.
    277  *
    278  * @param[in] call Message call structure.
    279  *
    280  */
    281 #define IPC_GET_DEVICE(call)  ((device_id_t) IPC_GET_ARG1(call))
    282 
    283 /** Return the packet identifier message argument.
    284  *
    285  * @param[in] call Message call structure.
    286  *
    287  */
    288 #define IPC_GET_PACKET(call)  ((packet_id_t) IPC_GET_ARG2(call))
    289 
    290 /** Return the count message argument.
    291  *
    292  * @param[in] call Message call structure.
    293  *
    294  */
    295 #define IPC_GET_COUNT(call)  ((size_t) IPC_GET_ARG2(call))
    296 
    297 /** Return the device state message argument.
    298  *
    299  * @param[in] call Message call structure.
    300  *
    301  */
    302 #define IPC_GET_STATE(call)  ((device_state_t) IPC_GET_ARG2(call))
    303 
    304 /** Return the maximum transmission unit message argument.
    305  *
    306  * @param[in] call Message call structure.
    307  *
    308  */
    309 #define IPC_GET_MTU(call)  ((size_t) IPC_GET_ARG2(call))
    310 
    311 /** Return the device driver service message argument.
    312  *
    313  * @param[in] call Message call structure.
    314  *
    315  */
    316 #define IPC_GET_SERVICE(call)  ((services_t) IPC_GET_ARG3(call))
    317 
    318 /** Return the target service message argument.
    319  *
    320  * @param[in] call Message call structure.
    321  *
    322  */
    323 #define IPC_GET_TARGET(call)  ((services_t) IPC_GET_ARG3(call))
    324 
    325 /** Return the sender service message argument.
    326  *
    327  * @param[in] call Message call structure.
    328  *
    329  */
    330 #define IPC_GET_SENDER(call)  ((services_t) IPC_GET_ARG3(call))
    331 
    332 /** Return the error service message argument.
    333  &
    334  * @param[in] call Message call structure.
    335  *
    336  */
    337 #define IPC_GET_ERROR(call)  ((services_t) IPC_GET_ARG4(call))
    338 
    339 /** Return the phone message argument.
    340  *
    341  * @param[in] call Message call structure.
    342  *
    343  */
    344 #define IPC_GET_PHONE(call)  ((int) IPC_GET_ARG5(call))
    345 
    346 /** Set the device identifier in the message answer.
    347  *
    348  * @param[out] answer Message answer structure.
    349  * @param[in]  value  Value to set.
    350  *
    351  */
    352 #define IPC_SET_DEVICE(answer, value)  IPC_SET_ARG1(answer, (sysarg_t) (value))
    353 
    354 /** Set the minimum address length in the message answer.
    355  *
    356  * @param[out] answer Message answer structure.
    357  * @param[in]  value  Value to set.
    358  *
    359  */
    360 #define IPC_SET_ADDR(answer, value)  IPC_SET_ARG1(answer, (sysarg_t) (value))
    361 
    362 /** Set the minimum prefix size in the message answer.
    363  *
    364  * @param[out] answer Message answer structure.
    365  * @param[in]  value  Value to set.
    366  *
    367  */
    368 #define IPC_SET_PREFIX(answer, value)  IPC_SET_ARG2(answer, (sysarg_t) (value))
    369 
    370 /** Set the maximum content size in the message answer.
    371  *
    372  * @param[out] answer Message answer structure.
    373  * @param[in]  value  Value to set.
    374  *
    375  */
    376 #define IPC_SET_CONTENT(answer, value)  IPC_SET_ARG3(answer, (sysarg_t) (value))
    377 
    378 /** Set the minimum suffix size in the message answer.
    379  *
    380  * @param[out] answer Message answer structure.
    381  * @param[in]  value  Value to set.
    382  *
    383  */
    384 #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)
    385411
    386412/*@}*/
Note: See TracChangeset for help on using the changeset viewer.