Landfall

pkg/devices/fb/src/server/fb-server.cc

141:7aa21a758551
2022-09-27 Paul Boddie Fixed architecture-specific build directory detection.
     1 /*     2  * Common framebuffer server functionality.     3  *     4  * Copyright (C) 2018 Paul Boddie <paul@boddie.org.uk>     5  *     6  * This program is free software; you can redistribute it and/or     7  * modify it under the terms of the GNU General Public License as     8  * published by the Free Software Foundation; either version 2 of     9  * the License, or (at your option) any later version.    10  *    11  * This program is distributed in the hope that it will be useful,    12  * but WITHOUT ANY WARRANTY; without even the implied warranty of    13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    14  * GNU General Public License for more details.    15  *    16  * You should have received a copy of the GNU General Public License    17  * along with this program; if not, write to the Free Software    18  * Foundation, Inc., 51 Franklin Street, Fifth Floor,    19  * Boston, MA  02110-1301, USA    20  */    21     22 #include "fb-client.h"    23 #include "fb-server.h"    24 #include "fb-ops.h"    25     26 #include <l4/cxx/ipc_server>    27 #include <l4/re/env>    28 #include <l4/sys/typeinfo_svr>    29 #include <l4/util/util.h>    30     31 #include <stdint.h>    32     33 /* Handle invocations. */    34     35 int    36 Framebuffer_server::dispatch(l4_umword_t obj, L4::Ipc::Iostream &ios)    37 {    38   l4_msgtag_t tag;    39     40   (void) obj;    41   ios >> tag;    42     43   switch (tag.label())    44   {    45     case L4::Meta::Protocol:    46       return L4::Util::handle_meta_request<Framebuffer_device_interface>(ios);    47     48     case Framebuffer_op_get_framebuffer:    49       ios << _mem;    50       return L4_EOK;    51     52     case Framebuffer_op_get_framebuffer_size:    53       ios << get_framebuffer_size();    54       return L4_EOK;    55     56     case Framebuffer_op_get_view_info:    57       l4re_video_view_info_t view_info;    58       get_view_info(&view_info);    59     60       /* Serialise the view information structure. */    61     62       ios << L4::Ipc::buf_cp_out<uint8_t>((uint8_t *) &view_info, sizeof(view_info));    63       return L4_EOK;    64     65     default:    66       return -L4_EBADPROTO;    67   }    68 }