File: emm.hpp

package info (click to toggle)
abuse 2.00-12
  • links: PTS
  • area: main
  • in suites: slink
  • size: 12,708 kB
  • ctags: 15,389
  • sloc: ansic: 115,852; cpp: 6,792; lisp: 2,066; sh: 1,734; makefile: 1,601; asm: 264
file content (49 lines) | stat: -rw-r--r-- 1,047 bytes parent folder | download | duplicates (7)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#ifndef __EMM_H_
#define __EMM_H_
#include "system.h"
#ifdef __DOS            // this stuff is DOS specific, don't include
			// on other systems
#include "linked.hpp"

class emblock : public linked_node
{
public :
  unsigned beg,end;
  int emhandle;
  emblock *nextblk;
} ;


class expandedmm
{
public :
  unsigned frame_ad;
  long frmsz;
  linked_list allocblks,freeblks;
  expandedmm();

  emblock *alloc(unsigned size);
  void free(emblock *block);
  void free_all();
  long avail() { return frmsz; }
  void set(emblock *block, char *dat);
  void get(emblock *block, char *dat);
  ~expandedmm() { free_all(); }
} ;

extern expandedmm epmem;
extern int  emm_avail;
int      EMM_detect();
int      EMM_num_free_pages();
int      EMM_version();
int      EMM_num_active_handles();
long     EMM_free_memory();
int      EMM_alloc(int pages);  // remeber pages are 16K, 16384 bytes
		// returns handle or -1
int      EMM_free(int handle);   // returns true for success
unsigned EMM_frame_address();
void     EMM_map_page(int handle);

#endif
#endif