Re: segfaulting due to no vm386old()

Search this archive.

From: Matan Ziv-Av (matan@svgalib.org)
Date: Tue 21 Jan 2003 - 12:44:03 IST


On Tue, 21 Jan 2003, Dan Murphy wrote:

> quick question for you.I am running into this on a linux 2.4.20 kernel w/
> libc6 and if I
> am correct this function (vm86old()) doesn't exist in libc6 it is a libc5
> function ? not really
> sure.Is there any kind of work around for this ? old headers or libs ? ..
> This is making my
> app segfault when using the vesa chipset in svgalib.Have other people run
> into this ?

I don't think this is the problem. Please try vbetest, or vbemodeinfo
257 in lrmi-0.6m subdirectory, and see if it helps. Looking at kernel
2.4.20 source, I see that sys_vm86old is still implemented. Running
strace vbemodeinfo 278, the output is similar:

open("/dev/mem", O_RDWR)                = 4
old_mmap(NULL, 1282, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 4, 0) = 0
old_mmap(0xa0000, 393216, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 4, 0xa0000) = 0xa0000
ioperm(0, 0x400, 0x1)                   = 0
iopl(0x3)                               = 0
vm86old(0x804c0cc)                      = -1 ENOSYS (Function not implemented)
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40017000
vm86old(0x804c0cc)                      = -1 ENOSYS (Function not implemented)
vm86old(0x804c0cc)                      = -1 ENOSYS (Function not implemented)
vm86old(0x804c0cc)                      = -1 ENOSYS (Function not implemented)
vm86old(0x804c0cc)                      = -1 ENOSYS (Function not implemented)
vm86old(0x804c0cc)                      = -1 ENOSYS (Function not implemented)
vm86old(0x804c0cc)                      = -1 ENOSYS (Function not implemented)
vm86old(0x804c0cc)                      = -1 ENOSYS (Function not implemented)
munmap(0x40017000, 4096)                = 0
_exit(0)                                = ?

But the output of the program:

VBE Version 3.0
Matrox Graphics Inc.
mode 278
mode_attributes = 155
win_a_attributes = 7
win_b_attributes = 0
win_granularity = 64
win_size = 64
win_a_segment = 40960
win_b_segment = 0
win_func_ptr_off = 23300
win_func_ptr_seg = 49152
bytes_per_scanline = 2048
x_resolution = 1024
y_resolution = 768
x_char_size = 8
y_char_size = 16
number_of_planes = 1
bits_per_pixel = 16
number_of_banks = 1
memory_model = 6
bank_size = 0
number_of_image_pages = 9
res1 = 1
red_mask_size = 5
red_field_position = 10
green_mask_size = 5
green_field_position = 5
blue_mask_size = 5
blue_field_position = 0
rsvd_mask_size = 1
rsvd_field_position = 15
direct_color_mode_info = 1
phys_base_ptr = -704643072
offscreen_mem_offset = 0
offscreen_mem_size = 0

Shows that it actually works.

-- 
Matan Ziv-Av.                         matan@svgalib.org



------------------------------------------------------------------
Unsubscribe:  To:   listbot@svgalib.org
              Body: unsubscribe linux-svgalib


This archive was generated by hypermail 2.1.4 : Wed 21 Jan 2004 - 22:10:25 IST