This is the thirteenth progress report for TrackGit project. I did the following in last week:
Since, the planned work from the proposal is done, Stephan and I agreed on doing some UI improvements to the existing views. Stephan suggested me some improvements, which I did in last week. These are:
Added progress bar to Clone Window
I added a progress bar to the clone window. This will give better information about the clone progress.
Hello everyone, here we are with another update on the project. Last week we have started with installing
interrupt handler, so basically we will pass the address of a function while installing the interrupt handler,
later when an interrupt occurs that function will be called.
We opted for pin-based interrupt handler, which is one of the levels of interrupt handling. I have explained
them in previous blogs.
Instructions to install an interrupt handler:
bus->irq = pciInfo->u.h0.interrupt_line; // driver needs to assign interrupt line to itself
if (bus->irq == 0 || bus->irq == 0xff){ // checking if right interrupt value is assigned
return B_ERROR
status = install_io_interrupt_handler(bus->irq, handler_function_name, bus, 0);
if(status != B_OK) // check if interrupt handler is successfully installed
return B_ERROR
Currently interrupt handler function can handle following interrupts(Referred: FreeBSD code)
This is the twelveth progress report for TrackGit project. I did the following in last week:
Implemented Log Viewer
I implemented a log viewer in TrackGit. It shows a window with the commits in the repository so far. Link to commit.
The following screenshot shows the log viewer:

I also added tests for the log command. Link to commit.
This is the eleventh progress report for TrackGit project. I did the following in last week:
Implemented Create Branch command
I implemented Create Branch command. This command creates a branch at head of the repository. There is also an option to switch to the newly created branch. Link to commit.
The following screenshot shows Create Branch window:

Implemented Switch Branch command
I implemented option to switch branch. The Switch Branch window gives user with a drop down list of branches in current repository. Then user selects the desired branch and the repo is switched to that branch. Link to commit.
So here we are in the final week of the second phase of this project. I would like to address what was planned
for this phase and what we have achieved and will proceed to plan for the third phase.
Second Phase Highlights
- We were successful in register mapping through MMUIO.
- We have created a bus manager but not linked with controller ATM.
- Interrupts have not been implemented but also not required in this phase.
- Separating controller(device) and MMC bus(child device) but in a single module is still needed to be done.
- mmc_disk being running multiple times is fixed now.
Plan for the Third Phase
I have already addressed the issue of reading OCR value in my most recent blog post. The issue was, even after
setting up the command register we were not able to get the response from response register after reset. When
we enabled timout error status, it automatically turned the error bit to 1 and which says that it failed to get
any response in 64 cycles of SDCLK. It will the foremost task
and will be reading the response of commands. To proceed further in sequences it’s necessary that we should get
the responses of the commands.
Hey guys! Last week we have improved the code and made it more readable. We have completed the reset and clock sequence and
proceed with power sequence. In the 4th step of the sequence, it asks to get the Operation Conditions Register(OCR) value of SD card. In the SD host controller spec, in command register there is command index bits which mention about setting up command number specified in bits 45-40 of the command-format in SD Memory Card Physical
Layer Specification. Hence, in command format they mentioned about
command index, there we figured out that our command of interest is CMD58 which has following config
This is the tenth progress report for TrackGit project. I did the following in last week.
Implemented Show conflicts Window
Last week I implemented Pull command. While pulling changes, sometimes there might be conflicts while merging the changes. These conflicts are shown when pull command execution is finished. In addition to that, I implemented a “Show conflicts” option to see the current conflicting files in the repository. This option is only shown when there are conflicts in the repository. Link to the commit.
As many of you are already aware, LibreOffice is now available on Haiku. This has been a long journey that has started for me around 2014, when I was looking for things I could do for the project. LibreOffice port was one of those things. It seemed to need so much effort, most people didn’t even want to start. That’s understandable given people were busy developing the OS. However, it’s not the first time someone tried to do it.
The Rust programming language belongs to the category of modern programming languages that aim to provide a reliable
and safe alternative to C and C++. In the past few years, few people have been working on getting the compiler, and
the other build tools to our platform. And in fact, since Rust 1.0 there have been reasonably working binary packages
for building Rust projects on Haiku.
With the recent addition of Rust 1.27.0 in the HaikuPorts repository, I thought it would be good to do a short, public
write-up of the current state of Rust on Haiku, and some insight into the future.
Finally, we got the register mapping work and they are responsive, we have tested by enabling software reset bit and it has
all the default values of registers which are set by Qemu except the present state register and capabilities register. These
both should be left unaffected as mentioned in the spec.
We are following SD Host specification version 1.00 for now, which also doesn’t support UHS but Qemu seems to be supporting it
well.