#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#include <signal.h>
#include <sys/file.h>
#include "sbcl.h"
+#if defined(LISP_FEATURE_WIN32) && defined(LISP_FEATURE_SB_THREAD)
+#include "pthreads_win32.h"
+#else
+#include <signal.h>
+#endif
#include "runtime.h"
#include "os.h"
#include "core.h"
{
if (compression == COMPRESSION_LEVEL_NONE) {
while (bytes > 0) {
- long count = fwrite(addr, 1, bytes, file);
+ sword_t count = fwrite(addr, 1, bytes, file);
if (count > 0) {
bytes -= count;
addr += count;
bytes = words * sizeof(lispobj);
- printf("writing %lu bytes from the %s space at 0x%08lx\n",
- (unsigned long)bytes, names[id], (unsigned long)addr);
+ printf("writing %lu bytes from the %s space at 0x%p\n",
+ bytes, names[id], addr);
data = write_and_compress_bytes(file, (char *)addr, bytes, file_offset,
core_compression_level);
write_lispobj(data, file);
- write_lispobj((long)addr / os_vm_page_size, file);
+ write_lispobj((uword_t)addr / os_vm_page_size, file);
write_lispobj((bytes + os_vm_page_size - 1) / os_vm_page_size, file);
}
#ifdef LISP_FEATURE_GENCGC
{
- size_t size = (last_free_page*sizeof(long)+os_vm_page_size-1)
+ size_t size = (last_free_page*sizeof(sword_t)+os_vm_page_size-1)
&~(os_vm_page_size-1);
- unsigned long *data = calloc(size, 1);
+ uword_t *data = calloc(size, 1);
if (data) {
- unsigned long word;
- long offset;
+ uword_t word;
+ sword_t offset;
page_index_t i;
for (i = 0; i < last_free_page; i++) {
/* Thanks to alignment requirements, the two low bits
* are always zero, so we can use them to store the
* allocation type -- region is always closed, so only
* the two low bits of allocation flags matter. */
- word = page_table[i].region_start_offset;
+ word = page_table[i].scan_start_offset;
gc_assert((word & 0x03) == 0);
data[i] = word | (0x03 & page_table[i].allocated);
}