Hi everyone, I am trying to understand the code in kolibriOS and how it works to help me write my own hobby OS but sometimes I encounter calls to functions that I can't understand or find the implementation of the function for example I was reading rtl8029.asm and I saw the call PCI_Find_IO I found this function in pci.inc but inside this file I there is this stdcall PciRead32, [device.pci_bus], [device.pci_dev], esi but I couldn't find the implemetation of the function PciRead32.
How can I solve this problem and such problems in the future thank you?
understanding function calls in assembly files
These functions are in kernel. They are imported into the driver (MS COFF format, or now recently, PE)
Look at the files import.inc near the drivers, and exports.inc in kernel code.
Look at the files import.inc near the drivers, and exports.inc in kernel code.
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein
How are they imported into the file so they are used in it? format MS COFF defines the output format, it doesn't import them right? Also the syntax of imports.inc is hard to undertsand I cannot tell what is this file for, and I cannot find exports.inc in kernel code.
http://websvn.kolibrios.org/filedetails ... xports.inc - there it is, core/exports.inc
imports.inc is very simple, it's just an array of labels and addresses.
imports.inc is very simple, it's just an array of labels and addresses.
Should I search all the files in kernel directory to find this function? I searched in pci32.inc but nothing, my goal is to find the io base address and irq line of the rtl8029 network card so I can write my own driver, so please would you give me a hint on how can I find those functions so I can understand every thing? Is there a way to debug the boot process and track every thing that happens from boot until all drivers are ready, this would help understanding the boot process and how is every thing set up especially the network drivers.
If you actually look at the files I pointed you to, you'll see that the name of the function in kernel is not always the same as the name that is used in the driver.Mohsen47 wrote:Should I search all the files in kernel directory to find this function? I searched in pci32.inc but nothing, my goal is to find the io base address and irq line of the rtl8029 network card so I can write my own driver, so please would you give me a hint on how can I find those functions so I can understand every thing? Is there a way to debug the boot process and track every thing that happens from boot until all drivers are ready, this would help understanding the boot process and how is every thing set up especially the network drivers.
In exports.inc, you'll find the line
Code: Select all
pci_read32, 'PciRead32', \ ; stdcall
Now you can use a tool to search inside the contents of the file (windows search even can do this for you...)
You will find 3 files now exports.inc, dll.inc and apic.inc. We know it's not in exports.inc
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein
Who is online
Users browsing this forum: No registered users and 0 guests