summaryrefslogtreecommitdiff
path: root/sys/kern
AgeCommit message (Collapse)Author
2012-05-21Cleanup O_CLOEXEC handling and make sure UF_EXCLOSE is set correctlyMatthew Dempsky
when opening /dev/fd/* (i.e., UF_EXCLOSE is now set iff O_CLOEXEC is set, rather than copying UF_EXCLOSE from the file descriptor being dup'd). Also, add support for O_CLOEXEC and O_DIRECTORY to fhopen(). ok krw, guenther; feedback from millert; testing and bug finding by krw
2012-05-14Remove the "vn_open() returning ENXIO means dup+close" hook thatPhilip Guenthe
was used by the now defunct portalfs. Zero out fd_ofileflags[fd] when allocating an fd instead of when releasing it. ok krw@ matthew@
2012-05-10Only set a process's start time when starting the main thread. There'sPhilip Guenthe
also no need to protect that and the setting of the AFORK accounting flag with the scheduler lock. ok mikeb@
2012-05-06Change accept(), recvfrom(), recvmsg(), getsockname(), andMatthew Dempsky
getpeername() to return the untruncated address length in *addrlen instead of the number of bytes copied out. This matches POSIX's requirements and allows userland applications to detect when the returned address was truncated. ok guenther
2012-05-06take a file descriptor table lock after allocating pipe structuresMike Belopuhov
and buffers; ok guenther
2012-05-02Oops, previous change had some unrelated changes that shouldn't have beenPhilip Guenthe
committed; roll them back.
2012-05-01Eliminate the f_usecount ref count in struct file; instead of sleepingPhilip Guenthe
at the top of closef() until all in-progress calls finish, just do the advisory locking bits required of close() by POSIX and let whichever thread has the last reference do the call to the file's fo_close() method and the final cleanup. lots of discussion with deraadt@ and others; worked out with and ok krw@
2012-05-01Correct the error path in execve when there's a race to single threadPhilip Guenthe
the process. noted and ok markus@
2012-04-26Cleanup unp_bind() a little:Matthew Dempsky
- Require sun_family to be set to AF_UNIX (also in unp_connect()) - Ensure internal sockaddr_un's always have their length set to sizeof(struct sockaddr_un) regardless of the user specified length, implicitly extending with NUL characters as necessary. - Normalize sun_path to never contain a non-NUL character after a NUL character. Lack of NUL termination on truncated sockaddrs issue pointed out by Michael Kerrisk on the Austin Group mailing list. ok millert
2012-04-24In sosend() for AF_UNIX control message sending, correctly calculateTheo de Raadt
the size (internalized ones can be larger on some architectures) for fitting into the socket. Avoid getting confused by sb_hiwat as well. This fixes a variety of issues where sendmsg() would fail to deliver a fd set or fail to wait; even leading to file leakage. Worked on this with claudio for about a week...
2012-04-23Don't leak mbufs when bind() on a PF_UNIX socket fails.Matthew Dempsky
ok deraadt, miod, guenther
2012-04-22Add struct proc * argument to FRELE() and FILE_SET_MATURE() inPhilip Guenthe
anticipation of further changes to closef(). No binary change. ok krw@ miod@ deraadt@
2012-04-22Reset t_column to 0 when initializing a tty.Matthew Dempsky
ok deraadt@
2012-04-17Make it optional for kvm_getprocs() (and related sysctl) to returnPaul Irofti
thread information. Add a KERN_PROC_SHOW_THREADS flag that has to be set in order to get the thread info and make it off by default. This creates backwards compatibility for applications that relied on a given size/number of items to be returned. Modify ps(1) and top(1) accordingly. Okay guenther@.
2012-04-14If single threading is active, drirect the SIGKILL signal we send to orphanedMark Kettenis
traced processes to the active thread, otherwise we will deadlock resulting in an unkillable stopped process. ok guenther@
2012-04-14Do not just return in case the provided control buffer is too short sinceClaudio Jeker
that leaks all the file pointers. Instead make sure that the exit path via restart: -> out: does not free the uninitialized pointer. OK deraadt@ guenther@
2012-04-14Free tmp buffer in case the cluster allocation failed. Found by David Hill.Claudio Jeker
2012-04-14Revert rev 1.58, as it frees an uninitialized pointerPhilip Guenthe
ok deraadt@
2012-04-13gc unused functionTheo de Raadt
2012-04-13For now, direct the kill signal sent by PT_KILL to the thread that made usMark Kettenis
stop, just like we do for PT_CONTINUE/PT_STEP. The current code isn't ready for directing signals to other threads yet.
2012-04-13Don't convert a mbuf to a cluster and think the data in the mbuf is stillClaudio Jeker
valid after that. Copy the data into a temp buffer and then copy it back into the shiny new cluster. Problem found by deraadt@. Ok deraadt@
2012-04-13Backout a tiny part of the previous commit. Decrementing ps_singlecount inMark Kettenis
exit1() is wrong, since single_thread_check() already decrements it and may call exit1() after that. I can't reproduce the hang that this was supposed to fix anyway.
2012-04-13oops, wrong version of diff in previousTheo de Raadt
2012-04-13Do not clamp the file descriptors to the buffer size; that leads toTheo de Raadt
losing them. ok claudio
2012-04-13First stab at making ptrace(2) usable for debugging multi-threaded programs.Mark Kettenis
It implements a full-stop model where all threads are stopped before handing over control to the debugger. Events are reported as before through wait(2); you will have to call ptrace(PT_GET_PROCESS_STATE, ...) to find out which thread hit the event. Since this changes the size of struct ptrace_state, you will have to recompile gdb. ok guenther@
2012-04-13unneccessary casts to unsigned; ok claudioTheo de Raadt
2012-04-12In this case where dup2() extends the table using fdalloc, the newlyTheo de Raadt
selected fd is automatically fd_used(). We need to fd_unused() it, because it will be fd_used() again in finishdup(). spotted by guenther ok miod
2012-04-12Add per thread accounting, mainly for usage & friends.Paul Irofti
This expands the already bloated FILL_KPROC macro to take an extra parameter that indicates if the callee is a thread or a process. The userland bits are adjusted accordingly and ps(1) and top(1) now display per thread usage times when -H is used. Also pkill(1) had to be adjusted so that duplicates don't pop up. libkvm does basically the same thing as the kernel bits. Okay guenther@.
2012-04-12hibernate: fix lock/unlock mismatchAriane van der Steldt
Unlock missed an 'f', which caused it to unlock the in-use pageqs, rather than the free pageqs as it was supposed to.
2012-04-12If the "main" thread exits it stays around but unlinks itself from theMark Kettenis
threads list. Calling TAILQ_NEXT on them is a bad idea and will panic the kernel. So check the P_WEXIT flag and pretend the thread doesn't exist if it is set. Also make PT_GET_THREAD_FIRST return the first thread on the threads list instead of the "main" thread, such that you can actually keep enumerating the threads in this case. ok guenther@, miod@
2012-04-12syncTheo de Raadt
2012-04-12remove rfork(); ok guenther miodTheo de Raadt
2012-04-12PT_GETXMMREGS and PT_SETXMMREGS can take a TID.Mark Kettenis
2012-04-12syncTheo de Raadt
2012-04-12kill lfs system call lines and libc stubsTheo de Raadt
2012-04-12syncTheo de Raadt
2012-04-12New system call: getdtablecount(2) returns the number of fileTheo de Raadt
descriptors the process currently has open. ok guenther miod gilles ...
2012-04-12dup() was calling fd_used() twice for the new file descriptor. SeperateTheo de Raadt
the dup and dup2 cases. with guenther ok miod
2012-04-12move accounting flags to struct process; idea and ok guentherMike Belopuhov
2012-04-11Move the P_WAITED flag from struct proc to struct process.Mark Kettenis
ok guenther@
2012-04-11In sendmsg() permit at most 10% of maxfiles to be in-flightTheo de Raadt
during CMSG_DATA SCM_RIGHTS fd transfers. If this is exceeded, return EMFILE. ok claudio guenther gilles
2012-04-11SLIST_REMOVE_NEXT -> SLIST_REMOVE_AFTER for better consistency andChristian Weisgerber
compatibility with FreeBSD/NetBSD. Also rename SIMPLEQ_REMOVE_NEXT to SIMPLEQ_REMOVE_AFTER. ok mikeb@ guenther@
2012-04-10Add a start record to the ktrace and use a special magic string "KTR"Mike Belopuhov
to identify ktrace files. kdump(1) will now refuse to operate on trace data without the start record and as a bonus will print only PID, unless an -H flag is specified to print PID/TID pairs. Initial diff, input from and ok deraadt, guenther.
2012-04-10Make the KERN_NPROCS and KERN_MAXPROC sysctl()s and the RLIMIT_NPROC rlimitPhilip Guenthe
count processes instead of threads. New sysctl()s KERN_NTHREADS and KERN_MAXTHREAD count and limit threads. The nprocs and maxproc kernel variables are replaced by nprocess, maxprocess, nthreads, and maxthread. ok tedu@ mikeb@
2012-04-10When converting the timeout to ticks, both round up and add one to accountPhilip Guenthe
for the tick that we're already in the middle of. noted and tested by aja; ok kurt@
2012-04-10POSIX locks should track the process's pid and not the thread's idPhilip Guenthe
2012-04-07Tweak FAT detection/usage. Recognize 'bare' FAT media that lacksKenneth R Westerback
the 0x55aa signature. Don't try FAT detection if we have found an OpenBSD MBR partition. Don't try to read a disklabel from 'bare' FAT media. There can't be one. Finally, don't allow the writing of a disklabel on 'bare' FAT media. There is no safe spot for it, and splatting it in the middle of the FAT structures has not proved helpful.
2012-04-06Implement PT_GET_THREAD_FIRS and PT_GET_THREAD_NEXT.Mark Kettenis
ok miod@
2012-04-06ruadd() does the summing of system and user times, so doing so againPhilip Guenthe
results in bogus total times, as reported by numerous ports people. ok miod@
2012-03-31Some whitespace/paren tweaks. Rename the mbr testing variable fromKenneth R Westerback
'fattest' to 'mbrtest'. No change to .o.