GSoC 2026 - Intro and Proof of Work - Olympia Papaioannou

My name is Olympia Papaioannou, and I’m a computer science student at the University of Thessaly in Greece.

I’m particularly interested in embedded systems development since nowadays they are everywhere. I’m very excited about exploring RTEMS because it’s open source, lightweight, portable, and real-time capable for demanding applications. The code is clear and well documented, so this would be a great opportunity to learn and extend my skills.

I don’t have extensive experience with system architectures yet, so working on a small but immersive project like the microshell port, it will give me a deeper understanding of how operating systems work under the hood.

I’ve recently completed the prerequisite tasks outlined in the GSoC Starter’s Guide for the microshell port project.

I’d appreciate any guidance on potential project ideas or next steps as I prepare my proposal.

Thank you for your time, and I’m eager to become an active contributor to the RTEMS community.

Best regards,
Olympia Papaioannou

Environment
Host OS: WSL2 under Windows 11
RTEMS Version: RTEMS 7
BSP: SPARC
Execution: A basic implementation of the microshell port

#include <rtems.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "ush.h"

#define BUF_SIZE 64
static char ush_in_buf[BUF_SIZE];
static char ush_out_buf[BUF_SIZE];
struct ush_node_object ush_root_node;

void help_callback(struct ush_object *self, struct ush_file_descriptor const *file, int argc, char *argv[]) {
    printf("Available commands:\n  info, date, help\n");
}

void date_callback(struct ush_object *self, struct ush_file_descriptor const *file, int argc, char *argv[]) {
    time_t now = time(NULL);
    printf("RTEMS Time: %s", ctime(&now));
}

void info_callback(struct ush_object *self, struct ush_file_descriptor const *file, int argc, char *argv[]) {
    printf("RTEMS 7 Microshell Port OK!\n");
}

const struct ush_file_descriptor g_ush_buildin_commands[] = {
    { .name = "info", .help = "info", .exec = info_callback },
    { .name = "help", .help = "help", .exec = help_callback },
    { .name = "date", .help = "date", .exec = date_callback },
    { .name = NULL } 
};
const size_t g_ush_buildin_commands_num = 3;

int msh_write_char(struct ush_object *self, char c) { return putchar(c); }
int msh_read_char(struct ush_object *self, char *c) {
    int ch = getchar();
    if (ch != EOF) { *c = (char)ch; return 1; }
    return 0;
}

static const struct ush_io_interface msh_iface = {
    .read = msh_read_char,
    .write = msh_write_char
};

static const struct ush_descriptor msh_desc = {
    .io = &msh_iface,
    .input_buffer = ush_in_buf,
    .input_buffer_size = BUF_SIZE,
    .output_buffer = ush_out_buf,
    .output_buffer_size = BUF_SIZE,
    .hostname = "rtems"
};

rtems_task Init(rtems_task_argument argument) {
    static struct ush_object ush;
    printf("\n--- RTEMS 7 Microshell ---\n");
    ush_init(&ush, &msh_desc);
    ush_node_mount(&ush, "/", &ush_root_node, NULL, 0);
    ush.current_node = &ush_root_node;

    while (1) {
        ush_service(&ush);
        rtems_task_wake_after(1);
    }
}

#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_MAXIMUM_TASKS 4
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_INIT
#include <rtems/confdefs.h>

Please send your hello world patch as described in 2.9. GSoC Getting Started — RTEMS User Manual 7.1023b8c (8th January 2026) documentation

Done!

sdancer@Dell-G15:~/GSC2026/rtems$ cat 0001-Modified-hello-world-message-for-GSC2026.patch
From aa1bfd07fb3776b795363997753161927e43ea37 Mon Sep 17 00:00:00 2001
From: Olympia Papaioannou <papaioannou.olia@gmail.com>
Date: Fri, 6 Mar 2026 12:20:50 +0200
Subject: [PATCH] Modified hello world message for GSC2026

---
 testsuites/samples/hello/init.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/testsuites/samples/hello/init.c b/testsuites/samples/hello/init.c
index 76b939818a..52ff966073 100644
--- a/testsuites/samples/hello/init.c
+++ b/testsuites/samples/hello/init.c
@@ -41,7 +41,7 @@ static rtems_task Init( rtems_task_argument ignored )

   rtems_print_printer_fprintf_putc( &rtems_test_printer );
   TEST_BEGIN();
-  printf( "Hello World\n" );
+  printf( "Hello from the Dark Side\n" );
   TEST_END();
   rtems_test_exit( 0 );
 }
--
2.43.0

Thanks, you can add yourself to tracking/2026 · main · RTEMS / Programs / Google Summer of Code · GitLab.

Please search here for any open topics related to the projects that interest you, and if there aren’t any then you can start a new topic to discuss a project interest.

I have already selected : Microshell port

Thanks