CS350 COS
COS
Loading...
Searching...
No Matches
nic.c
Go to the documentation of this file.
1/*
2 * Copyright (c) 2013-2023 Ali Mashtizadeh
3 * All rights reserved.
4 */
5
6#include <stdbool.h>
7#include <stdint.h>
8
9#include <sys/kassert.h>
10#include <sys/kdebug.h>
11#include <sys/queue.h>
12#include <sys/mbuf.h>
13#include <sys/nic.h>
14#include <sys/spinlock.h>
15
16LIST_HEAD(NICList, NIC) nicList = LIST_HEAD_INITIALIZER(nicList);
17uint64_t nextNICNo = 0;
18
19void
20NIC_AddNIC(NIC *nic)
21{
22 nic->nicNo = nextNICNo++;
23 LIST_INSERT_HEAD(&nicList, nic, entries);
24}
25
26void
28{
29 LIST_REMOVE(nic, entries);
30}
31
32NIC *
34{
35 NIC *n;
36
37 LIST_FOREACH(n, &nicList, entries) {
38 if (n->nicNo == nicNo)
39 return n;
40 }
41
42 return NULL;
43}
44
45void
46Debug_NICs(int argc, const char *argv[])
47{
48 NIC *n;
49
50 LIST_FOREACH(n, &nicList, entries) {
51 kprintf("nic%lld: %02x:%02x:%02x:%02x:%02x:%02x\n", n->nicNo,
52 n->mac[0], n->mac[1], n->mac[2], n->mac[3], n->mac[4], n->mac[5]);
53 }
54}
55
56REGISTER_DBGCMD(nics, "List NICs", Debug_NICs);
57
static int nicNo
Definition: ethdump.c:9
int kprintf(const char *fmt,...)
Definition: printf.c:210
#define REGISTER_DBGCMD(_NAME, _DESC, _FUNC)
Definition: kdebug.h:11
NIC * NIC_GetByID(uint64_t nicNo)
Definition: nic.c:33
void Debug_NICs(int argc, const char *argv[])
Definition: nic.c:46
void NIC_RemoveNIC(NIC *nic)
Definition: nic.c:27
void NIC_AddNIC(NIC *nic)
#define LIST_REMOVE(elm, field)
Definition: queue.h:465
#define LIST_HEAD_INITIALIZER(head)
Definition: queue.h:368
#define LIST_FOREACH(var, head, field)
Definition: queue.h:410
#define LIST_INSERT_HEAD(head, elm, field)
Definition: queue.h:451
#define LIST_HEAD(name, type)
Definition: queue.h:363
#define NULL
Definition: stddef.h:6
Definition: nic.h:11
uint64_t nicNo
Definition: nic.h:13
uint8_t mac[6]
Definition: nic.h:14
unsigned long uint64_t
Definition: types.h:13