📄 unifiedkernel-0.2.0-k2.6.13.diff
字号:
+ unsigned long commit_charge; /* */+ + /* vm */+ unsigned long peak_virtual_size; /* */+ unsigned long virtual_size; /* */+ + struct mmsupport vm; /* */+ struct list_head session_process_links; /* */+ + void* debug_port; /* */+ void* exception_port; /* */+ struct handle_table* object_table; /* */+ + /* security */+ struct ex_fast_ref token; /* */+ + unsigned long working_set_page; /* */+ struct kguarded_mutex address_creation_lock; /* */+ spinlock_t hyper_spacelock; /* */+ struct ethread* fork_in_progress; /* */+ unsigned long hardware_trigger; /* */+ void* pae_top; /* */+ unsigned long modified_page_count; /* */+ struct mm_avl_table vad_root; /* */+ void* vad_free_hint; /* */+ void* clone_root; /* */+ + struct mm_avl_table physical_vadroot; /* */+ + unsigned long number_of_private_pages; /* */+ unsigned long number_of_locked_pages; /* */+ unsigned short next_page_color; /* */+ + /* used by debug subsystem */+ void* section_object; /* */+ + /* peb */+ void* peb; /* */+ void* section_base_address; /* */+ + struct eprocess_quota_block* quota_block; /* */+ unsigned long last_thread_exit_status; /* */+ + struct pagefault_history* working_set_watch; /* */+ void* win32_window_station; /* */+ void * inherited_from_unique_pid; /* */+ access_mask_t granted_access; /* */+ unsigned long def_hard_error_processing; /* */+ void* ldt_information; /* */+ void* vdm_objects; /* */+ void* device_map; /* */+ + void* spare0[3]; /* */+ + union+ {+ struct hardware_pte_x86 pagedirectory_pte; /* */+ unsigned long long filler; /* */+ };+ char image_file_name[16]; /* */+ unsigned char priority_class; /* */+ union+ {+ struct+ {+ unsigned char subsystem_minor_version; /* */+ unsigned char subsystem_major_version; /* */+ };+ unsigned short subsystem_version; /* */+ };+ void** win32_process; /* */+ struct ejob* job; /* */+ unsigned long job_status; /* */+ struct list_head job_links; /* */+ void* locked_pages_list; /* */+ + /* used by rdr/security for authentication */+ void* security_port; /* */+ + large_integer_t read_operation_count; /* */+ large_integer_t write_operation_count; /* */+ large_integer_t other_operation_count; /* */+ large_integer_t read_transfer_count; /* */+ large_integer_t write_transfer_count; /* */+ large_integer_t other_transfer_count; /* */+ + unsigned long commit_charge_limit; /* */+ unsigned long commit_charge_peak; /* */+ + struct list_head thread_list_head; /* */+ + union+ {+ struct+ {+ unsigned long create_reported:1;+ unsigned long no_debug_inherit:1;+ unsigned long process_exiting:1;+ unsigned long process_delete:1;+ unsigned long wow64_split_pages:1;+ unsigned long vm_deleted:1;+ unsigned long outswap_enabled:1;+ unsigned long outswapped:1;+ unsigned long fork_failed:1;+ unsigned long wow64_va_space4Gb:1;+ unsigned long address_space_initialized:2;+ unsigned long set_timer_resolution:1;+ unsigned long break_on_termination:1;+ unsigned long session_creation_underway:1;+ unsigned long write_watch:1;+ unsigned long process_in_session:1;+ unsigned long override_address_space:1;+ unsigned long has_address_space:1;+ unsigned long launch_prefetched:1;+ unsigned long inject_inpage_errors:1;+ unsigned long vm_top_down:1;+ unsigned long image_notify_done:1;+ unsigned long pde_update_needed:1;+ unsigned long vdm_allowed:1;+ unsigned long smap_allowed:1;+ unsigned long create_failed:1;+ unsigned long default_io_priority:3;+ unsigned long spare1:1;+ unsigned long spare2:1;+ };+ unsigned long flags; /* */+ };++ unsigned long cookie; /* */+ unsigned long session; /* */+ unsigned long active_threds; /* */+ struct ex_fast_ref prefetch_trace; /* */+ void* awe_info; /* */+ struct se_audit_proc_creation_info se_audit_proc_creation_info; /* */+ struct list_head mm_process_links; /* */++ /* FIXME MOVE TO AVL TREES */+ struct maddress_space address_space; /* */++ /* for unified kernel */+ struct win32_object* ep_obj; /* process object */+ struct nls_table* ep_nls; /* unicode-ascii translation */+ rwlock_t ep_lock;+ struct win32_object **ep_handles; /* handle map */+ struct win32_object *ep_handles_array[0]; /* handle map */+}; /* struc eprocess */++typedef struct eprocess EPROCESS, *PEPROCESS;++static inline struct ethread *get_first_thread(struct eprocess *process)+{+ return list_entry(process->thread_list_head.next, struct ethread, thread_list_entry);+}++#endif /* _WIN32_PROCESS_H */+diff -Nur linux-2.6.13.ori/include/linux/win32_thread.h linux-2.6.13/include/linux/win32_thread.h--- linux-2.6.13.ori/include/linux/win32_thread.h 1970-01-01 00:00:00.000000000 +0000+++ linux-2.6.13/include/linux/win32_thread.h 2006-12-29 15:12:11.000000000 +0000@@ -0,0 +1,344 @@+/*+ * win32_thread.h+ *+ * Copyright (C) 2006 Insigme Co., Ltd+ *+ * Authors: + * - Decao Mao, Chenzhan Hu, Lixing Chu, Limin Jin, Liwei Zhou, Zhiqiang Jiao+ *+ * This software has been developed while working on the Linux Unified Kernel+ * project (http://linux.insigma.com.cn) in the Insigma Reaserch Institute, + * which is a subdivision of Insigma Co., Ltd (http://www.insigma.com.cn).+ * + * The project is sponsored by Insigma Co., Ltd.+ *+ * The authors can be reached at linux@insigma.com.cn.+ *+ * This program is free software; you can redistribute it and/or modify it+ * under the terms of the GNU General Public License as published by the+ * Free Software Foundation; either version 2 of the License, or (at your+ * option) any later version.+ *+ * Revision History:+ * Jan 2006 - Created.+ */++#ifndef _WIN32_THREAD_H_+#define _WIN32_THREAD_H_++#include <linux/module.h>+#include <linux/list.h>+#include <asm/atomic.h>+#include <linux/win32_object.h>+#include <linux/winternl.h>++#define WIN32_THREAD_SIGNAL_OKAY 0+#define WIN32_THREAD_CANCEL_SIGNAL 1++struct task_struct;++enum kthread_state {+ Initialized,+ Ready,+ Running,+ Standby,+ Terminated,+ Waiting,+ Transition,+ DeferredReady,+};++struct ethread_operations {+ const char *name; /* ethread name */+ struct module *owner; /* responsible module */++ void (*close)(struct ethread *thread); /* request to destruct */+ void (*exit)(struct ethread *thread, int status); /* notification of exit */+ int (*signal)(struct ethread *thread, int signal); /* notification of signal (can cancel) */+ void (*execve)(struct ethread *thread); /* notification of execve */+ /* notification that fork/clone has set up the new process and */+ void (*fork)(struct ethread *thread, struct task_struct *parent,+ struct task_struct *child, unsigned long clone_flags);+};++struct w32thread+{+ void* message_queue;+ struct semaphore window_list_lock;+ struct list_head window_list_head;+ struct list_head w32_callback_list_head;+ struct kbdtables* keyboard_layout;+ struct desktop_object* desktop;+ void* desktop_handle;+ unsigned long message_pump_hook_value;+ unsigned char is_exiting;+};++struct kthread+{+ struct dispatcher_header header; + struct list_head mutant_list_head; + void* initial_stack; + unsigned long stack_limit; + void* teb; + void* tls_array; + void* kernel_stack; + unsigned char debug_active; + unsigned char state; + unsigned char alerted[2]; + unsigned char iopl; + unsigned char npx_state; + char saturation; + char priority; + unsigned long context_switches; + long wait_status; + kirql_t wait_irql; + kprocessor_mode_t wait_mode; + unsigned char wait_next; + unsigned char wait_reason; + union + {+ struct kwait_block* wait_block_list; + struct kgate* gate_object; + }; + struct list_head wait_list_entry; + unsigned long wait_time; + char base_priority; + unsigned char decrement_count; + unsigned char priority_decrement; + char quantum; + struct kwait_block wait_block[4]; + void* lego_data; ++ kaffinity_t user_affinity; + kaffinity_t affinity; + unsigned char system_affinity_active;++ unsigned char power_state; + unsigned char npx_irql; + unsigned char pad[1]; ++ struct kqueue* queue; + struct ktimer timer; + struct list_head queue_list_entry; ++ unsigned char preempted; + unsigned char process_ready_queue; + unsigned char next_processor; + unsigned char kstack_resident; ++ void* callback_stack; ++ struct w32thread* win32thread; + struct ktrap_frame* trap_frame; ++ /* APC */+ union+ {+ struct+ {+ unsigned short kernel_apc_disable;+ unsigned short special_apc_disable;+ };+ unsigned long combined_apc_disable; + };+ spinlock_t apc_queue_lock; + struct kapc_state* apc_state_pointer[2]; + struct kapc_state apc_state; + struct kapc_state saved_apc_state; + struct kapc suspend_apc; + unsigned char apc_queueable; + unsigned char apc_state_index; ++ unsigned char enable_stack_swap; + unsigned char large_stack; + unsigned char resource_index; + unsigned char previous_mode; + unsigned char alertable; + unsigned char auto_alignment; + void* stack_base; + struct semaphore suspend_semaphore; + struct list_head thread_list_entry; + char freeze_count; + unsigned char suspend_count; + unsigned char ideal_processor; + unsigned char disable_boost; + unsigned char quantum_reset; +};++struct ethread+{+ struct kthread tcb;+ union+ {+ ntstatus_t exit_status; + void* ofs_chain; + };+ struct list_head post_block_list; + union+ {+ struct termination_port* termination_port; + struct ethread* reaper_link; + void* keyed_wait_value; + };+ spinlock_t active_timer_list_lock; + struct list_head active_timer_list_head; + struct client_id cid; ++ union+ {+ struct semaphore lpc_reply_semaphore; + struct semaphore keyed_reply_semaphore; + };+ union+ {+ void* lpc_reply_message; + void* lpc_waiting_on_port; + };+ union+ {+ struct list_head lpc_reply_chain; + struct list_head keyed_wait_chain; + };+ unsigned long lpc_reply_messageid; ++ struct ps_impersonation_information* impersonation_info; ++ struct list_head irp_list; + unsigned long top_level_irp; + struct device_object* device_to_verify; + struct eprocess* threads_process; + void* start_address; + union+ {+ void* win32_start_address; + unsigned long lpc_received_messageid; + };+ struct list_head thread_list_entry;+ ex_rundown_ref_t rundown_protect; + spinlock_t thread_lock; + unsigned long read_cluster_size; + access_mask_t granted_access; + union+ {+ struct+ {+ unsigned long terminated:1;+ unsigned long dead_thread:1;+ unsigned long hide_from_debugger:1;+ unsigned long active_impersonation_info:1;+ unsigned long system_thread:1;+ unsigned long hard_errors_are_disabled:1;+ unsigned long break_on_termination:1;+ unsigned long skip_creation_msg:1;+ unsigned long skip_termination_msg:1;+ };+ unsigned long cross_thread_flags; + };+ union+ {+ struct+ {+ unsigned long active_exworker:1;+ unsigned long exworker_can_wait_user:1;+ unsigned long memory_maker:1;+ unsigned long keyed_event_inuse:1;+ };+ unsigned long same_thread_passive_flags; + };+ union+ {+ struct+ {+ unsigned long lpc_received_msgid_valid:1;+ unsigned long lpc_exit_thread_called:1;+ unsigned long address_space_owner:1;+ unsigned long owns_process_workingsete_xclusive:1;+ unsigned long owns_process_workingset_shared:1;+ unsigned long owns_system_workingset_exclusive:1;+ unsigned long owns_system_workingset_shared:1;+ unsigned long owns_session_workingset_exclusive:1;+ unsigned long owns_session_workingset_shared:1;+ unsigned long apc_needed:1;+ };+ unsigned long same_thread_apc_flags; + };+ unsigned char forward_cluster_only; + unsigned char disable_page_fault_clustering; + unsigned char active_fault_count; ++ /* for unified kernel */+ atomic_t et_count; /* ref count */ + struct task_struct* et_task; /* Linux task */+ struct win32_object* et_obj; /* thread object */+ struct ethread_operations* et_ops;+};++typedef struct ethread ETHREAD, *PETHREAD;++static __inline__ void etget(struct ethread *thread)+{+ atomic_inc(&thread->et_count);+} /* end etget() */++static __inline__ void etput(struct ethread *thread)+{+ if (atomic_dec_and_test(&thread->et_count)){+ struct module *owner = thread->et_ops->owner;+ thread->et_ops->close(thread); /* will destroy this ethread */+ if(owner)+ module_put(owner);+ }+} /* end etput()*/++/* add a win32 thread to a task */+extern void add_ethread(struct task_struct *tsk, struct ethread *thread);++/* remove a win32 thread from a task */+extern void remove_ethread(struct task_struct *tsk, struct ethread *thread);++/* a win32 thread exit */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -