summaryrefslogtreecommitdiffstats
path: root/lib/libkvm
Commit message (Collapse)AuthorAgeFilesLines
* In r227839, when removing libkvm dependency on procfs(5),trociny2013-07-102-2/+1
| | | | | | | | | | | kvm_uread() function, used for reading from /proc/pid/mem, was removed too. But the function declaration remained in kvm.h public header and the soname was not bumped. Remove kvm_uread() from kvm.h and bump the soname. Reported by: rmh Discussed on: arch
* Switch to 2-clause license and standard textemaste2013-06-061-15/+11
| | | | Approved by: bms@
* libkvm: Make second /dev/null file descriptor close-on-exec as well.jilles2013-05-041-1/+1
| | | | MFC after: 1 week
* libkvm: Use O_CLOEXEC instead of separate fcntl(F_SETFD) call.jilles2013-05-041-15/+4
| | | | MFC after: 1 week
* Remove EOL whitespace.joel2013-04-111-1/+1
|
* Fix typo.glebius2013-04-111-1/+1
|
* Include types.h for C99 uintXX_t types.glebius2013-04-111-1/+1
|
* o Provide function kvm_read_zpcpu() to access UMA_ZONE_PCPU allocations.glebius2013-04-104-7/+89
| | | | | | o Provide function kvm_counter_u64_fetch() to fetch valut of a counter(9). Sponsored by: Nginx, Inc.
* kvm_getprocs: gracefully handle errors from kvm_deadprocsavg2012-10-061-2/+8
| | | | | | and don't confuse callers with incorrect return value MFC after: 9 days
* kvm_proclist: ignore processes in larvae stateavg2012-10-061-0/+2
| | | | | Reviewed by: jhb MFC after: 8 days
* If the IdlePDPT is not present, PAE is not activekevlo2012-09-101-1/+0
|
* General mdoc(7) and typo fixes.gjb2012-05-111-2/+2
| | | | | | PR: 167734 Submitted by: Nobuyuki Koganemaru (kogane!jp.freebsd.org) MFC after: 3 days
* Try to avoid ambiguity when sysctl returns ENOMEM additionallytrociny2012-02-011-2/+3
| | | | | | | | | | | | checking the returned oldlen: when ENOMEM is due to the supplied buffer being too short the return oldlen is equal to buffer size. Without this additional check kvm_getprocs() gets stuck in loop if the returned ENOMEM was due the exceeded memorylocked limit. This is easily can be observed running `limits -l 1k top'. Submitted by: Andrey Zonov <andrey zonov org> MFC after: 1 week
* In kvm_argv(), the case when the supplied buffer was too short to hold thetrociny2012-01-151-23/+31
| | | | | | | | | | requested value was handled incorrectly, and the function retuned NULL instead of the truncated result. Fix this and also remove unnecessary check for buf != NULL, which alway retuns true. MFC after: 3 days
* Now kvm_getenvv() and kvm_getargv() don't need procfs(5).trociny2011-11-222-341/+27
| | | | MFC after: 2 weeks
* Add support for PBVM addresses. In a nutshell this means:marcel2011-08-061-7/+81
| | | | | | | | | | | | | | | o get the physical address and size of the PBVM page table. This can be found in the bootinfo structure, of which the physical address is recorded as the ELF entry point. o translate region 4 virtual addresses to physical addresses using the PBVM page table. In _kvm_kvatop() make the distinction between physical address and core file offset a little clearer to avoid confusion. To further enhance readability, always store the translated address into pa so that it's obvious how the translation from va to pa happened. Approved by: re (blanket)
* Rename ki_ocomm to ki_tdname and OCOMMLEN to TDNAMLEN.bz2011-07-181-2/+2
| | | | | | | | | Provide backward compatibility defines under BURN_BRIDGES. Suggested by: jhb Reviewed by: emaste Sponsored by: Sandvine Incorporated Approved by: re (kib)
* With retirement of cpumask_t and usage of cpuset_t for representing aattilio2011-07-041-29/+2
| | | | | | | | | | | | | | | mask of CPUs, pc_other_cpus and pc_cpumask become highly inefficient. Remove them and replace their usage with custom pc_cpuid magic (as, atm, pc_cpumask can be easilly represented by (1 << pc_cpuid) and pc_other_cpus by (all_cpus & ~(1 << pc_cpuid))). This change is not targeted for MFC because of struct pcpu members removal and dependency by cpumask_t retirement. MD review by: marcel, marius, alc Tested by: pluknet MD testing by: marcel, marius, gonzo, andreast
* Revert r222363, as bde@ pointed out the initial solution was far moreattilio2011-05-311-1/+1
| | | | correct.
* Style fix: cast to size_t rather than u_long when comparing to sizeof()attilio2011-05-271-1/+1
| | | | | | rets. Requested by: kib
* In the near future cpuset_t objects in struct pcpu will be axed out, butattilio2011-05-271-2/+29
| | | | | | | | as long as this does not happen, we need to fix interfaces to userland in order to not break run-time accesses to the structure. Reviwed by: kib Tested by: pluknet
* MFCattilio2011-05-142-8/+0
|
* libkvm: fix logic inversion introduced with last commituqs2011-02-021-2/+2
| | | | | Reported by: Brandon Gooch <jamesbrandongooch@gmail.com> Pointy hat to: uqs
* libkvm: Unbreak build for powerpc64/powerpcuqs2011-01-241-0/+1
| | | | | This slipped through my testing due to the recent roto-tiling of the ARCH/TARGET parts that I need to catch up with. Mea culpa.
* libkvm: fix process runtime calculation on crashdumpsuqs2011-01-232-13/+29
| | | | | | | | | | | | | Fix a long standing bug, where the procs ticks where assumed to be in us. Instead, read cpu_tick_frequency from the kernel and use the same logic to convert runtime. This is still too optimistic in that it assumes cpu_tick_frequency is available and fixed. Since this function is only called on crashdumps, I think we can live with that. Testing has shown the values to be correct for different kern.hz inside Virtualbox. Bump WARNS. Alignment issues on some archs mean this is still at 3. Reviewed by: bde
* libkvm code janitoringuqs2011-01-2320-309/+215
| | | | | | | | | | | | - make WARNS=6 clean for archs w/o strict alignment requirments - add const, ANSIfy, remove unused vars, cast types for comparison - thanks to differing definitions of VM_MIN_ADDRESS across our archs, we need to trick the compiler to not complain about signedness. We could either fix VM_MIN_ADDRESS to always be a simple integer or make the check conditional on $ARCH. Closes PRs: kern/42386, kern/83364 Reviewed by: bde
* Revert most of r210764, now that mdocml does the rightuqs2010-12-281-1/+1
| | | | | | thing with empty quotation macros. Requested by: Alex Kozlov
* Similar to sys/net/vnet.h, define the linker set name for sys/sys/pcpu.hdim2010-11-142-5/+6
| | | | as a macro, and use it instead of literal strings.
* amd64: introduce minidump version 2avg2010-11-111-14/+94
| | | | | | | | | | | | | | | | | | After KVA space was increased to 512GB on amd64 it became impractical to use PTEs as entries in the minidump map of dumped pages, because size of that map alone would already be 1GB. Instead, we now use PDEs as page map entries and employ two stage lookup in libkvm: virtual address -> PDE -> PTE -> physical address. PTEs are now dumped as regular pages. Fixed page map size now is 2MB. libkvm keeps support for accessing amd64 minidumps of version 1. Support for 1GB pages is added. Many thanks to Alan Cox for his guidance, numerous reviews, suggestions, enhancments and corrections. Reviewed by: alc [kernel part] MFC after: 15 days
* Add minidump support for MIPSgonzo2010-11-074-11/+318
|
* Repair some build breakage introduced in r211725 and garbage collect somenwhitehorn2010-08-281-2/+8
| | | | code made obsolete in the same commit.
* MFtbemd:imp2010-08-231-3/+4
| | | | | Prefer MACHNE_CPUARCH to MACHINE_ARCH in most contexts where you want to test of all the CPUs of a given family conform.
* mdoc: make sure to pass at least one argument to quotation macrosuqs2010-08-021-1/+1
|
* 64-bit PowerPC KVM support.nwhitehorn2010-07-101-0/+218
|
* Much closer approximation of the kernel's calculation of this value.sbruno2010-06-181-1/+6
| | | | | Reviewed by: alc Obtained from: Yahoo Inc.
* kvm(3): Mention that some of the functions use sysctl(3) instead of kmem.jilles2010-04-251-2/+6
| | | | | | | | Additionally, because of sysctl(3) use (which is generally good), behaviour for crash dumps differs slightly from behaviour for live kernels and this will probably never be fixed entirely, so weaken that claim. MFC after: 1 week
* Fix several typos in macros or macro misusage.uqs2010-03-121-1/+1
| | | | | | Found by: make manlint Reviewed by: ru Approved by: philip (mentor)
* Not all programs including kvm.h include the necessary headers to userwatson2010-03-011-1/+1
| | | | | | | u_int, so prefer unsigned int. MFC after: 6 days Pointed out by: bz, kib, Mr Tinderbox
* A first cut at teaching libkvm how to deal with dynamic per-CPU storagerwatson2010-03-016-7/+210
| | | | | | | | | | | | | | | | | (DPCPU): A new API, kvm_dpcpu_setcpu(3), selects the active CPU for the purposes of DPCPU. Calls to kvm_nlist(3) will automatically translate DPCPU symbols and return a pointer to the current CPU's version of the data. Consumers needing to read the same symbol on several CPUs will invoke a series of setcpu/nlist calls, one per CPU of interest. This addition makes it possible for tools like netstat(1) to query the values of DPCPU variables during crashdump analysis, and is based on similar code handling virtualized global variables. MFC after: 1 week Sponsored by: Juniper Networks, Inc.
* Fix typo in comment.rwatson2010-02-271-2/+2
| | | | MFC after: 3 days
* Build lib/ with WARNS=6 by default.ed2010-01-021-0/+2
| | | | | | | | | Similar to libexec/, do the same with lib/. Make WARNS=6 the norm and lower it when needed. I'm setting WARNS?=0 for secure/. It seems secure/ includes the Makefile.inc provided by lib/. I'm not going to touch that directory. Most of the code there is contributed anyway.
* Add a missing else that negated the truncation of ki_ngroups tobrooks2009-12-101-1/+1
| | | | | | NGROUPS. Submitted by: Dmitry Pryanishnikov <lynx dot ripe at gmail dot com>
* Fix a copy-paste bug when reading data from the last 3 (7 for PAE) bytes ofjhb2009-11-061-6/+6
| | | | | | | a page mapped by a large page in the kernel. Submitted by: Dorr H. Clark dclark of engr.scu.edu MFC after: 1 week
* cr_groups is no longer embedded in struct ucred and is instead storedbrooks2009-09-081-1/+1
| | | | | | | | | | | in a seperate array. As such we need to use kvm_read rather than bcopy to populate the ki_groups field. This fixes a crash when running ps -ax on a coredump. Reported by: brucec Tested by: brucec MFC after: 3 days
* Rather than replicating the maths from the kernel, use thebz2009-08-131-1/+1
| | | | | | | | | value the kernel calculated directly as we already read it with struct vnet. This will make kvm_vnet.c more resilent in case of possible kernel changes. Reviewed by: rwatson Approved by: re (kib)
* Merge the remainder of kern_vimage.c and vimage.h into vnet.c andrwatson2009-08-011-1/+0
| | | | | | | | | | vnet.h, we now use jails (rather than vimages) as the abstraction for virtualization management, and what remained was specific to virtual network stacks. Minor cleanups are done in the process, and comments updated to reflect these changes. Reviewed by: bz Approved by: re (vimage blanket)
* Revert the changes to struct kinfo_proc in r194498. Instead, fillbrooks2009-07-241-2/+8
| | | | | | | | | | in up to 16 (KI_NGROUPS) values and steal a bit from ki_cr_flags (all bits currently unused) to indicate overflow with the new flag KI_CRF_GRP_OVERFLOW. This fixes procstat -s. Approved by: re (kib)
* Make libkvm work on live systems and crashdumps with andbz2009-07-234-9/+412
| | | | | | | | | | | | | | | | | | without VIMAGE virtualization in the kernel. If we cannot resolve a symbol try to see if we can find it with prefix of the virtualized subsystem, currently only "vnet_entry" by identifying either the vnet of the current process for a live system or the vnet of proc0 (or of dumptid if compiled in a non-default way). The way this is done currently allows us to only touch libkvm but no single application. Once we are going to virtualize more subsystems we will have to review this decision for better scaling. Submitted by: rwatson (initial version of kvm_vnet.c, lots of ideas) Reviewed by: rwatson Approved by: re (kib)
* Rework the credential code to support larger values of NGROUPS andbrooks2009-06-191-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NGROUPS_MAX, eliminate ABI dependencies on them, and raise the to 1024 and 1023 respectively. (Previously they were equal, but under a close reading of POSIX, NGROUPS_MAX was defined to be too large by 1 since it is the number of supplemental groups, not total number of groups.) The bulk of the change consists of converting the struct ucred member cr_groups from a static array to a pointer. Do the equivalent in kinfo_proc. Introduce new interfaces crcopysafe() and crsetgroups() for duplicating a process credential before modifying it and for setting group lists respectively. Both interfaces take care for the details of allocating groups array. crsetgroups() takes care of truncating the group list to the current maximum (NGROUPS) if necessary. In the future, crsetgroups() may be responsible for insuring invariants such as sorting the supplemental groups to allow groupmember() to be implemented as a binary search. Because we can not change struct xucred without breaking application ABIs, we leave it alone and introduce a new XU_NGROUPS value which is always 16 and is to be used or NGRPS as appropriate for things such as NFS which need to use no more than 16 groups. When feasible, truncate the group list rather than generating an error. Minor changes: - Reduce the number of hand rolled versions of groupmember(). - Do not assign to both cr_gid and cr_groups[0]. - Modify ipfw to cache ucreds instead of part of their contents since they are immutable once referenced by more than one entity. Submitted by: Isilon Systems (initial implementation) X-MFC after: never PR: bin/113398 kern/133867
* Fix missing includes of <string.h>, to silence some compiler warnings.ed2009-06-147-2/+7
| | | | Submitted by: Pawel Worach
OpenPOWER on IntegriCloud