summaryrefslogtreecommitdiffstats
path: root/hw1/common.h
blob: b580098956dbe7e88bb3259f88f701cd7b68a326 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#ifndef SP_HW1_COMMON_H
#define SP_HW1_COMMON_H

#include <stdbool.h>
#include <stdlib.h>
#include <sys/select.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>

void* e_malloc (size_t size);
void e_err_exit (const char* a);

typedef struct {
    bool active;
    int ref_count;
    fd_set fset;
    dev_t fdev;
    ino_t fino;
} fnode;

typedef struct {
    int maxfd;
    fnode* flist;
} ftab;

ftab* ftab_create (int maxfd);
fnode* ftab_insert (ftab* ft, dev_t fdev, ino_t fino, int fd);
fnode* ftab_search (ftab* ft, dev_t fdev, ino_t fino);
void ftab_free (ftab* ft);
fnode* fnode_ref (fnode* fn, int fd);
void fnode_unref (fnode* fn, ftab* ft);

#endif /* SP_HW1_COMMON_H */