I've made a Makefile for this project. It should be very easy to use if you have all required tools installed :)
First of all, configure environment varables required for this project. Just specify kernel directory with $KID.
export KID=$HOME/kernel/goldfishThen, start the emulator. Wait until adb devices can list the emulator device.
After all, just invoke these four commands to test my solution.
make all
make test_bbc
make run_bbc BBC_PARAMETER="2 4 41 10"
make rmmodmake all tests ptree kernel module automatically with my own test case, and prints a process tree in problem 3.
make test_bbc automatically tests my burger buddies solution, by first redirecting BBC log on Android device to local log.txt, and then use my test script to check if there's any inconsistency in the log file.
make run_bbc will print out logs for Burger Buddies problem.
make rmmod removes my kernel module (but not delete the file). Run this command and then you can test next student's project.
That's all :)
.
├── Makefile Makefile for whole project
├── README.md this file
├── burger_buddies Burger Buddies solution
│ ├── jni
│ │ ├── Android.mk
│ │ └── BurgerBuddies.c
│ └── result Burger Buddies log output folder
│ └── dummy.txt
├── burger_buddies_cond A Burger Buddies solution based on condition variable
│ └── main.cpp
├── burger_buddies_test Burger Buddies log checker
│ ├── Makefile
│ └── test.cpp
├── common prinfo structure used in both kernel and user space
│ └── prinfo.h
├── exec_test problem 3, spawn two process (parent/child)
│ └── jni
│ ├── Android.mk
│ └── exec_test.c
├── ptree problem 2, ptree program
│ └── jni
│ ├── Android.mk
│ └── ptree.c
├── ptree_module problem 1, ptree kernel module
│ ├── Makefile
│ ├── gen.h
│ ├── gen.sh
│ └── ptree_module.c
└── ptree_test test cases for ptree kernel module
└── jni
├── Android.mk
└── test.c
If you want to run the building, pushing and testing procedures manually, here I provide a list of all functions in the Makefile.
Run my own test for ptree.
make test_ptreeRun problem 3, test ptree by spawning parent and child process.
make runJust run ptree program.
make run_ptreeRun ptree test and problem 3.
make allRun my tests for burger buddies program.
make test_bbcRun Burger Buddies on Android emulator with parameters.
make run_bbc BBC_PARAMETER="2 4 41 10"Build and push all executables to Android emulator /data/local.
make pushBuild and push kernel module.
make installRemove kernel module.
make rmmodClean workspace.
make cleanThanks for reading this long readme! In project report I highlighted some special works I've done in this project. While waiting for building and testing, you may take a glance of that.