Vol. 11, no.2, 2019


Konstantin V. Pugin, Kirill A. Mamrosenko, Alexander M. Giatsintov
Scientific Research Institute of System Analysis of RAS, Center of Visualization and Satellite Information Technologies, https://niisi.ru
Moscow 117218, Russian Federation

Received 23.01.2019, accepted 05.02.2019
Abstract. Article describes solutions for developing programs for interaction between Linux operating system and display controller. Operating system architecture encourages creating a driver — component, which task is to perform interaction of hardware controller and OS kernel with the use of many protocols. The development of drivers for the open source OS is difficult due to continuous changes in the structure of the kernel, which breaks backward compatibility frequently. Several approaches to display controller driver development are provided in the article. Basic concepts of these drivers include Kernel Mode Setting (or KMS), meant to provide driver in the kernel and User Mode Setting, meant to provide driver in graphical server. Specific way is used for develop Linux kernel drivers - it is half-procedural, and half-object oriented. Sometimes it is called as “OOP in C”, because it is based on GNU C Language extensions usage to simulate object-oriented techniques. GNU C usage almost prevents using non-GNU compilers to build a driver. Newest concept of writing display controller driver for Linux kernel is based upon atomic mode setting concept, in modern Linux it is achieved via state concept - intermediate states of an object are stored and modified without side effects to other objects. In order to make this concept work, driver should conform to the principle “disable function undoes all effects of enable and nothing more”. Several approaches for display driver development are provided in this article, and most modern method – atomic KMS mode setting, - is described in detail.

Keywords: drivers, embedded, KMS, kernel module, development

UDC 004.454

RENSIT, 2019, 11(2):217-224 DOI: 10.17725/rensit.2019.11.217

Full-text electronic version of this article - web site http://en.rensit.ru/vypuski/article/283/11(2)217-224e.pdf