how BTFIXUP_CALL is used..

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,
It's raining Suday afternoon in Korea where many people are in grief for the loss of their family members from the ferry accident last week.
We have those victims and families in our thoughts and prayers..
Anyway, I have a question..
In file mm/memory.c (linux 3.3), in funrcion __pmd_alloc, I see a line below.
        pmd_t *new = pmd_alloc_one(mm, address);

pmd_alloc_one is defined as below.
        #define pmd_alloc_one(mm, address)      BTFIXUP_CALL(pmd_alloc_one)(mm, address)

if I apply the BTFIXUP_CALL macro, (#define BTFIXUP_CALL(__name) ___f_##__name)
it just becomes ___f_pmd_alloc_one which is defined in file arch/sparc/boot/btfix.S below.
        -----------
        ...
                .global ___btfixup_end
        ___btfixup_end:

        ! Define undefined references
                .global ___f_flush_sig_insns
        ___f_flush_sig_insns:
        ...
                .global ___f_pmd_alloc_one
        ___f_pmd_alloc_one:
        ...
        ---------------
which makes me think ___f_pmd_alloc_one is just an adress shared by many ___f_... functions.
And I couldn't find ___f_pmd_alloc_one anywhere else. (no definition..)
But actually, as I guessed, the pmd_alloc_one function is actually srmmu_pmd_alloc_one function.
How is this done? I only know BTFIXUP.. thing is adjusting the functions for the correct subarchitecture but I can't understand how this is done. 
Could anyboy tell me how this is done? or any good reference?
Thanks,
Chan
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies




[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux