UbixOS V2 2.0

Functions
fork.c File Reference
`#include <ubixos/fork.h>`
`#include <sys/types.h>`
`#include <ubixos/sched.h>`
`#include <ubixos/tty.h>`
`#include <ubixos/vitals.h>`
`#include <vmm/vmm.h>`
`#include <string.h>`
`#include <assert.h>`
`#include <lib/kprintf.h>`
`#include <sys/descrip.h>`
Include dependency graph for fork.c:

Go to the source code of this file.

## Functions
| __asm (".globl sysFork_old \n" "sysFork_old: \n" " xor %eax,%eax \n" " call schedNewTask \n" " testl %eax,%eax \n" " je fork_ret \n" " pushl %esi \n" " pushl %edi \n" " pushl %ebp \n" " pushl %eax \n" " call fork_copyProcess \n" " movl %eax,(%ebx) \n" " addl $16,%esp \n" "fork_ret: \n" " ret \n")
int | fork_copyProcess (struct taskStruct *newProcess, long ebp, long edi, long esi, long none, long ebx, long ecx, long edx, long eip, long cs, long eflags, long esp, long ss)
void | qT ()
int | sys_fork (struct thread *td, struct sys_fork_args *args)

## Function Documentation

## ◆ __asm()

__asm | ( | ".globl sysFork_old \n" "sysFork_old: \n" " xor % | eax,
|  | %eax \n" " call schedNewTask \n" " testl % | eax,
|  | %eax \n" " je fork_ret \n" " pushl %esi \n" " pushl %edi \n" " pushl %ebp \n" " pushl %eax \n" " call fork_copyProcess \n" " movl % | eax,
|  | (%ebx) \n" " addl | $16,
|  | %esp \n" "fork_ret:\n" " ret \n" |
| ) |  |

## ◆ fork_copyProcess()

int fork_copyProcess | ( | struct taskStruct * | newProcess,
|  | long | ebp,
|  | long | edi,
|  | long | esi,
|  | long | none,
|  | long | ebx,
|  | long | ecx,
|  | long | edx,
|  | long | eip,
|  | long | cs,
|  | long | eflags,
|  | long | esp,
|  | long | ss
| ) |  |

Definition at line 144 of file fork.c.

References _current, assert, tssStruct::back_link, tssStruct::cr3, tssStruct::cs, osInfo::cwd, tssStruct::ds, tssStruct::eax, tssStruct::ebp, tssStruct::ebx, tssStruct::ecx, tssStruct::edi, tssStruct::edx, tssStruct::eflags, tssStruct::eip, tssStruct::es, tssStruct::esi, tssStruct::esp, tssStruct::esp0, tssStruct::esp1, tssStruct::esp2, FORK, tssStruct::fs, taskStruct::gid, tssStruct::gs, taskStruct::id, tssStruct::io_map, kprintf(), tssStruct::ldt, memcpy(), taskStruct::oInfo, tty_termNode::owner, sched_yield(), tssStruct::ss, tssStruct::ss0, tssStruct::ss1, tssStruct::ss2, taskStruct::state, taskStruct::td, taskStruct::term, tssStruct::trace_bitmap, taskStruct::tss, taskStruct::uid, thread::vm_daddr, thread::vm_dsize, thread::vm_taddr, thread::vm_tsize, vmm_copyVirtualSpace(), and osInfo::vmStart.

Here is the call graph for this function:

## ◆ qT()

void qT | ( |  | ) |

Definition at line 206 of file fork.c.

References kprintf().

Here is the call graph for this function:

## ◆ sys_fork()

int sys_fork | ( | struct thread * | td,
|  | struct sys_fork_args * | args
| ) |  |

Definition at line 40 of file fork.c.

References _current, tssStruct::back_link, taskStruct::children, tssStruct::cr3, tssStruct::cs, osInfo::cwd, tssStruct::ds, tssStruct::eax, tssStruct::ebp, tssStruct::ebx, tssStruct::ecx, tssStruct::edi, tssStruct::edx, tssStruct::eflags, tssStruct::eip, tssStruct::es, tssStruct::esi, tssStruct::esp, tssStruct::esp0, tssStruct::esp1, tssStruct::esp2, FORK, thread::frame, tssStruct::fs, taskStruct::gid, tssStruct::gs, taskStruct::id, tssStruct::io_map, kmalloc(), tssStruct::ldt, memcpy(), thread::o_files, taskStruct::oInfo, tty_termNode::owner, taskStruct::parent, taskStruct::pgrp, taskStruct::ppid, sched_yield(), schedNewTask(), tssStruct::ss, tssStruct::ss0, tssStruct::ss1, tssStruct::ss2, taskStruct::state, taskStruct::td, thread::td_retval, taskStruct::term, trapframe::tf_cs, trapframe::tf_ds, trapframe::tf_ebp, trapframe::tf_ebx, trapframe::tf_ecx, trapframe::tf_edi, trapframe::tf_edx, trapframe::tf_eflags, trapframe::tf_eip, trapframe::tf_es, trapframe::tf_esi, trapframe::tf_esp, trapframe::tf_fs, trapframe::tf_ss, tssStruct::trace_bitmap, taskStruct::tss, taskStruct::uid, thread::vm_daddr, thread::vm_dsize, thread::vm_taddr, thread::vm_tsize, vmm_copyVirtualSpace(), and osInfo::vmStart.

Here is the call graph for this function: