Here is the answer to HW1. Macros are shown in square brackets. Since I told you that you did not need to follow macros there was no need to expand them.
I also said in class that you could ignore SMP code. The following includes the SMP calls, but I have marked most of them.
sys_read fget fcheck locks_verify_area [IS_MANDLOCK] locks_mandatory_area memset posix_locks_conflict locks_same_owner locks_conflict locks_overlap (*read) read_null fput locks_remove_flock locks_delete_lock locks_wake_up_blocks [wake_up] schedule [in_interrupt] [release_kernel_lock] [spin_lock_irq] [signal_pending] del_from_runqueue [idle_task] [can_schedule] goodness [spin_unlock_irq] get_cycles /* okay to ignore SMP code */ [get_mmu_context] [switch_to] schedule_tail [smp_processor_id] /* okay to ignore SMP code */ [idle_task] /* okay to ignore SMP code */ reschedule_idle [smp_processor_id] /* okay to ignore smp code */ [related] reschedule_idle_slow /* BEGIN SMP CODE YOU COULD IGNORE */ [smp_processor_id] [spin_lock_irqsave] [idle_task] [cpu_curr] cpu_logical_map [cpu_curr] [related] preemption_goodness goodness goodness [spin_unlock_irqrestore] smp_send_reschedule send_IPI_single __save_flags __cli __prepare_ICR2 apic_write __prepare_ICR apic_write __restore_flags [spin_unlock_irqrestore] /* END SMP CODE YOU COULD IGNORE */ [smp_processor_id] preemption_goodness goodness goodness [wmb] [reacquire_kernel_lock] [spin_unlock_irq] [read_lock] [for_each_task] [read_unlock] [spin_lock_irq] prev_goodness goodness do_bottom_half [smp_processor_id] softirq_trylock test_and_set_bit atomic_read clear_bit [hardirq_trylock] __sti run_bottom_halves [get_active_bhs] [clear_active_bhs] __cli [hardirq_endlock] softirq_endlock clear_bit run_task_queue [spin_lock_irqsave] [spin_unlock_irqrestore] move_last_runqueue locks_delete_block locks_free_locks waitqueue_active [panic] kfree [MAP_NR] [PageSlab] [SLAB_GET_PAGE_CACHE] __kmem_cache_free [spin_lock_irqsave] [SLAB_BUFCTL] [SLAB_GET_PAGE_SLAB] [SLAB_STATS_DEC_ACTIVE] kmem_poison_obj memset [spin_unlock_irqrestore] kmem_cache_full_free kmem_slab_unlink kmem_slab_link_end [kmem_slab_end] kmem_cache_one_free kmem_slab_unlink kmem_slab_link_free lock /* only if object has lock operation */ remove_filp insert_file_free unlock_kernel()