00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00038 #ifndef NET_NETIF_SKEL_H_
00039 #define NET_NETIF_SKEL_H_
00040
00041 #include <async.h>
00042 #include <fibril_synch.h>
00043 #include <ipc/services.h>
00044
00045 #include <adt/measured_strings.h>
00046 #include <net/device.h>
00047 #include <net/packet.h>
00048
00050 typedef struct {
00051 device_id_t device_id;
00052 int nil_phone;
00053 device_state_t state;
00054 void *specific;
00055 } netif_device_t;
00056
00063 DEVICE_MAP_DECLARE(netif_device_map, netif_device_t);
00064
00066 typedef struct {
00067 int net_phone;
00068 netif_device_map_t device_map;
00069 fibril_rwlock_t lock;
00070 } netif_globals_t;
00071
00072 extern netif_globals_t netif_globals;
00073
00079 extern int netif_initialize(void);
00080
00096 extern int netif_probe_message(device_id_t device_id, int irq, void *io);
00097
00115 extern int netif_send_message(device_id_t device_id, packet_t *packet,
00116 services_t sender);
00117
00132 extern int netif_start_message(netif_device_t *device);
00133
00147 extern int netif_stop_message(netif_device_t *device);
00148
00165 extern int netif_get_addr_message(device_id_t device_id,
00166 measured_string_t *address);
00167
00184 extern int netif_specific_message(ipc_callid_t callid, ipc_call_t *call,
00185 ipc_call_t *answer, size_t *count);
00186
00201 extern int netif_get_device_stats(device_id_t device_id,
00202 device_stats_t *stats);
00203
00204 extern int find_device(device_id_t, netif_device_t **);
00205 extern void null_device_stats(device_stats_t *);
00206 extern void netif_pq_release(packet_id_t);
00207 extern packet_t *netif_packet_get_1(size_t);
00208
00209 extern int netif_module_start(void);
00210
00211 #endif
00212