00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include <agnix/agnix.h>
00015 #include <agnix/net/net.h>
00016 #include <agnix/memory.h>
00017
00018 #define MOD_NAME "NET: "
00019
00020 u8 *frb_data(struct frb_s *frb)
00021 {
00022 return (frb->frb_data + frb->frb_offset);
00023 }
00024
00025 u8 *frb_push(struct frb_s *frb, int size)
00026 {
00027 frb->frb_offset += size;
00028
00029 return frb_data(frb);
00030 }
00031
00032 u8 *frb_pop(struct frb_s *frb, int size)
00033 {
00034 if (frb->frb_offset < size)
00035 return NULL;
00036
00037 frb->frb_offset -= size;
00038 frb->frb_len += size;
00039
00040 return frb_data(frb);
00041 }
00042
00043 int frb_create(struct frb_s *frb)
00044 {
00045 frb->frb_len = 0;
00046 frb->frb_offset = 0;
00047 frb->frb_data = (u8 *)get_free_pages(0);
00048
00049 return 0;
00050 }
00051
00052 int frb_destroy(struct frb_s *frb)
00053 {
00054 put_free_pages((u32)frb->frb_data, 0);
00055
00056 return 0;
00057 }
00058
00059 int frb_reverse(struct frb_s *frb)
00060 {
00061 frb->frb_offset = 1000;
00062
00063 return 0;
00064 }