2 * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
3 * Licensed under the GPL
14 #include "user_util.h"
17 void remap_data(void *segment_start
, void *segment_end
, int w
)
23 if(w
) prot
= PROT_WRITE
;
25 prot
|= PROT_READ
| PROT_EXEC
;
26 size
= (unsigned long) segment_end
-
27 (unsigned long) segment_start
;
28 data
= create_mem_file(size
);
29 addr
= mmap(NULL
, size
, PROT_WRITE
| PROT_READ
, MAP_SHARED
, data
, 0);
30 if(addr
== MAP_FAILED
){
31 perror("mapping new data segment");
34 memcpy(addr
, segment_start
, size
);
35 if(switcheroo(data
, prot
, addr
, segment_start
, size
) < 0){
36 printf("switcheroo failed\n");
42 * Overrides for Emacs so that we follow Linus's tabbing style.
43 * Emacs will notice this stuff at the end of the file and automatically
44 * adjust the settings for this buffer only. This must remain at the end
46 * ---------------------------------------------------------------------------
48 * c-file-style: "linux"