Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |

# Issues to be aware of in porting Qt/Embedded to another OS

Qt/Embedded is designed to be reasonably platform-independent. However, there is currently only a Linux implementation. The following dependencies will need to be addressed if you intend to port to another operating system (files that you need to modify follow each section):

System V IPC (shared memory and semaphores) is used to share window regions between client and server. You will need to provide something similar unless you want a single-application setup (i.e. running only one program, which is the server). System V semaphores are also used for synchronising access to the framebuffer. (qwindowsystem_qws.cpp, qwsregionmanager_qws.cpp, qapplication_qws.cpp, qlock_qws.cpp)

Unix-domain sockets are used to communicate things like keyboard events, requests to raise windows and QCOP messages between applications. Again, you will need to provide something similar unless you want a single-application setup. It should be possible to implement something like this using message queues or similar mechanisms; with the exception of QCOP messages (which are generated by client applications and not Qt/Embedded) individual messages should be no more than a few bytes in length. (qwssocket_qws.cpp)

The Linux framebuffer device is used to map in the drawing area. You will need to replace it (by creating a new class of QScreen) with something else giving a byte pointer to a memory-mapped framebuffer, plus information about width, height and bit depth (which most likely you can simply hard-code). If your framebuffer is not memory-mapped or is in an unsupported format or depth you will need to modify QGfxRaster as well. (qgfxlinuxfb_qws.cpp)

The accelerated drivers currently use the Linux QScreen and use /proc/bus/pci to map in PCI config space. However, these are only example drivers; the chances are that you will need to write your own driver in any case, and you will need to provide your own way to map in control registers. (qgfxmach64_qws.cpp, qgfxvoodoo_qws.cpp, qgfxmatrox_qws.cpp)

Qt/Embedded makes use of the standard C library and some Posix functions. Mostly the latter are concentrated in platform dependent code anyway (e.g. mmap() to map in the Linux framebuffer).

Sound uses a Linux /dev/dsp style device. If you want to use the Qt/Embedded sound server you'll need to reimplement it. (qsoundqss_qws.cpp)

Qt/Embedded uses select() to implement QSocketDevices and listen for events to/from the Qt/Embedded server application. (qapplication_qws.cpp)