]> 4ch.mooo.com Git - 16.git/blob - src/sega.c
hmmm
[16.git] / src / sega.c
1 #include <stdio.h>\r
2 #include <stdlib.h>\r
3 #include <malloc.h>\r
4 \r
5 struct list {\r
6     struct list __based(__self) *next;\r
7     int         value;\r
8 };\r
9 \r
10 void main(int argc, char *argv[])\r
11   {\r
12     int         i;\r
13     __segment   segu;
14         void __based(__self) *pee;\r
15     struct list __based(segu) *head;\r
16     struct list __based(segu) *p;\r
17 \r
18     /* allocate based heap */\r
19     segu = _bheapseg( 65536 );\r
20     if( segu == _NULLSEG ) {\r
21       printf( "Unable to allocate based heap\n" );\r
22       exit( 1 );\r
23     }\r
24 \r
25     /* create a linked list in the based heap */\r
26     head = 0;\r
27     for( i = 1; i < 4096; i++ ) {\r
28       p = _bmalloc( segu, sizeof( struct list ) );\r
29       if( p == _NULLOFF ) {\r
30         printf( "_bmalloc failed\n" );\r
31         break;\r
32       }\r
33       p->next = head;\r
34       p->value = i;\r
35       head = p;\r
36     }\r
37 \r
38     /* traverse the linked list, printing out values */\r
39     for( p = head; p != 0; p = p->next ) {\r
40                 if(p==head || p->next==0 || p==pee){
41                         printf("Segu = %04X", p); printf( "     Value = %d\n", p->value );
42                 }\r
43     }\r
44
45         printf("program=%FP\n", *argv[0]);
46         printf("seg=%04X\n", segu);
47 \r
48     /* free all the elements of the linked list */\r
49     for( ; p = head; ) {\r
50       head = p->next;\r
51       _bfree( segu, p );\r
52     }\r
53     /* free the based heap */\r
54     _bfreeseg( segu );
55 }\r