CW07 Weekly Digest

Table of Contents

Communication

Most of the time this week I dedicated to studying communication skills. I created an article where I collect information about small talk and storytelling.

Communication goals

Also for this purpose, I installed Monica - a personal CRM for my contacts, which allows me to organize networking. I tried the test variant with my personal PC. I plan to install it permanently onto a raspberry or Linux server.

On persuasion

People like people who respect their opinions.

  1. Say that you agree that BOSS is a fine brand and ask him what in particular he likes about it so that you have the best chance of matching his need to something you do have in the shop.

And if you are going to persuade them to do what you want them to do, you need to find out more about their beliefs and views. You need to know what they believe in. You need to know what motivates them.

C Language

Good article about learning C language https://blog.regehr.org/archives/1393.

I can find high-quality code to read in C here: Redis, Musl, or Xv6.

Pointers challenge: https://blogs.oracle.com/linux/post/the-ksplice-pointer-challenge

Also, take a look at articles with undefined behavior.

Book to read: Expert C

xv6

How to add a system call

Here is how system calls are added in the real Linux https://www.kernel.org/doc/html/v4.10/process/adding-syscalls.html

To make new system calls easy to review, it’s best to divide up the patch set into separate chunks. These should include at least the following items as distinct commits (each of which is described further below):

  • The core implementation of the system call, together with prototypes, generic numbering, Kconfig changes, and fallback stub implementation.
  • Wiring up of the new system calls for one particular architecture, usually x86 (including all of x86_64, x86_32, and x32).
  • A demonstration of the use of the new system call in userspace via a self-test in tools/testing/selftests/.
  • A draft man page for the new system call, either as plain text in the cover letter or as a patch to the (separate) man-pages repository

To debug xv6 go to the main folder and run

gdb-multiarch

Network

Playground for IP fragmentation

Ideas

Questions

  1. Right now I’ve been searching for an example of how to prepare a system call, so I could push it fully onto my GitHub
  2. How elf file maps onto the process
  3. How to get binary files for xv6 to run through objdump
  4. How to copy files into xv6 without recompiling the full OS
  5. So now we have risk functions. How do they communicate with qemu? Or maybe it’s better to abstract from the hardware for now?