Screensaver

Ivan Voras ivoras at geri.cc.fer.hr
Tue Feb 24 14:52:39 PST 2004


I'm thinking of writing a console screen saver for fun and learning 
about kernel programming, and I have several questions (actually there 
are many, I'm just starting here :) ).

- Can VESA_800x600 mode be used in a screen-saver? What are the issues 
concering supporting more video modes both for console framebuffer and 
screensavers (IIRC, VESA 2.0 modes are all alike - simple linear 
framebuffers)?

- I've been studying existing screen savers, and I find that in FreeBSD 
5 (which is the only system I intend to support), the sources for the 
screen saver modules are located in /usr/src/sys/dev/syscons/ but the 
Makefiles are in /usr/src/sys/modules/syscons/. I find this strange. Why 
is this so and should I continue to use such layout?

- I have basic and general knowledge about locking, mutextes, and 
reading the source of dragon_saver i see this code in dragon_saver() 
function:
		...
		int pl;
		...

                 if (blanked <= 0) {
                         pl = splhigh();
                         set_video_mode(adp, VIDEO_MODE);
                         vid = (u_char *)adp->va_window;
                         curve = CURVE + 1;
                         ++blanked;
                         splx(pl);
                 }

a) why the calls to spl...() functions? What do they do in this case?
b) I read in the manpages that the spl...() functions are deprecated and 
I should use mutex(9) functions. How would the above code use mutexes?

- what functions can I call in a kernel module (kld)? Can sysctl(3) be 
called? The rest of libc? External libraries? (actually, what are the 
things that I can and can't do in a kld?)


Thanks for your time, I'll probably be back with more :)

-- 
              `\|/'     .---------------.
              ,'Y`.   _( To think....    )_________
             )|._.|( ( Doesn't that involve little )
             /(___)\  ""( little lightbulbs over )"
            (       )    ""( My head ??? )"""""""
             `..-.,'        """""""""""""
               |"|
            .--' `--.


More information about the freebsd-hackers mailing list