Symbols
/etc/system 25
/proc 31, 528
/proc See process file system
_ 81
Numerics
64 bit features See sixtyfour (64) bit support
A
ABS32 570
address space 482, 503
callbacks 507
introduction 27
kernel functions 503-507
management 502, 503
page faults 508
SPARC 493
x86 and x64 495
address spaces 490
advise() 515
agent LWP 128
align (kernel memory statistic) 591
alloc (kernel memory statistic) 591
alloc_fail (kernel memory statistic) 591
amp See anonymous map point
ani_free 524
anon header 521
anon slot 523, 526
anon structure 523
Anonymous 779
anonymous map pointer (amp) 521
anonymous memory 516, 520, 521
accounting 527
definition of 483
kernel functions
anon_alloc() 523, 525
anon_copy_ptr() 523
anon_create() 523
anon_decref() 523
anon_dup() 523
anon_free() 523
anon_get_next_ptr() 523
anon_get_ptr() 524
anon_getpage() 524
anon_map_getpages() 524
anon_pages() 524
anon_private() 524
anon_release() 524
anon_resvmem() 524
anon_set_ptr() 524
anon_unresv() 524
anon_zero() 524
anonmap_alloc() 524
anonmap_free() 524
Application Binary Interface (ABI) 53
arg0 760
arg1 760
argv 97
async_request_size 561
atomic instructions 889
autofs 32
availrmem 525
B
backing store 482
backing store (swap) 482
bdev_strategy() 756, 823
Bill Joy 797
bmap_read() 822
bmap_write() 822
bootstrap 568
BSD 30
bufctl_audit 614
C
cache
coloring 547, 552
hardware 551
page 482
ufs block buffer 824
cache coherent NUMA (ccNUMA) 887
cachefs 32
cache-list 546
callout entry 983
callout queue insertion 983
Callout Table ??-984
Callout Tables
observing with mdb 985
callouts
callout queue processing 984
callout_schedule() 984
cas (compare and swap) instruction 890, 893, 894
CD-ROM file system 14
checkprot() 515
Chip Multithreading
about 865
as compared to vertical threading and simulaneous multithreading 866
chunk_size 592
clock (system) 524, 987
clock interrupt functions 977
clock interrupt tick processing 230
clock jitter 977
clock tick 23, 979
clocks
callout queue insertion 983
clock and timer interactions 978
interval timer expiration 979
kernel callout table 981
kernel clock_tick() function 979
lbolt 978
system clock thread 977
close() 738
cmpxchgl instruction 894
CMT See Chip Multithreading
colored bins 552
command
pfiles 71
commands
dispadmin 218, 220
dtrace 81, 94
elfdump 54
intrstat 289
ipcs 312
kmdb 1019
kstat 83, 87, 442
kstats 180
limit 88
lockstat 903, 904, 917
mdb 67, 73, 82, 86, 92, 99, 173, 178, 270, 453, 1019
mpstat 288
newtask 447
plimit 88
pmap 58, 315
ppriv 61
prctl 89
priocntl 225
prstat 47, 249, 443, 446
ps 62, 76, 77
sar -v 86
vmstat 288
zoneadm 400
Condition variables 895
condition variables 274
functions 278
cv_wait() 282
kernel functions 279
cv_broadcast() 282
cv_signal() 282
consistent_coloring (cache placement algorithm) 553
constructor() 583
copy-on-write (COW) 489, 499, 519, 546
COW. see copy-on-write
cpu
See processors
CPU See processors
credentials 59
structure members ??-64
cross-calls 289
cyclic cache 485
cyclics
about 987
expiry processing 993
heap management 990
jitter measurement 1000
kernel interfaces 1000
kernel structure resizing 997
locking 995
removing an entry 998
users of (clients) 999
cylinder group 817
D
data 911
data mappings 491
DDI 14, 981
ddi_mapdev(9F) 515
deadlock 565
deathrow 114
debugger
module management 1030
debuggers
about kmdb and mdb 1019
breakpoint and watchpoint management 1038
kadb 1024
kmdb
structure 1027
terminal I/O 1032
kmdb design decisions 1022
mdb components 1020
mdb module management 1021
procfs and libproc 1020
PROM interface 1036
deficit 556
demand paging 14, 28, 484
desfree 559, 562, 563
destructor() 583
directory name lookup cache (dnlc). see dnlc
dirty pages 483, 516
DISM See dynamic intimate shared memory 315
dispatcher 287
context switch monitoring 273
context switching 261
dispatch (run) queues - tracking queue depth 194
dispatch tables 218
dispatcher (run) queues 188
dispatcher locks 197, 895
functions summary 167
kernel structures 182-194
cpu_t 182
cpupart_t 183
disp_queue_info 185
disp_t 185
dispq_t 185
kthread_t 186
observing 190-195
xxproc_t 186
kernel swtch() function 261
lock functions 200
monitoring queue activity 260
preemption 265-269
monitoring with dtrace 270
monitoring with mdb 270
priority level, lock level 198
processor selection 256
queue balancing 255
queue functions 253
resume function 264
select-and-ratify algorithm 264
sleep queues 276
thread lgroup placement 871
thread selection 263
thread sleep 278
thread wakeup 282
thundering herd problem 905
dispatcher (kernel scheduler)
See also scheduler 22
DNLC 785
dnlc 785
directory cache 789
functions
dnlc_lookup() 786
housekeeping thread 793
negative cache 788
operation 785
statistics 793
support functions 787
door client 339
door creation 339
door interfaces 335-336
Doors 26, 335
dtrace
aggregations
lquantize 82
file systems 759
lockstat provider 917
profile provider 75
providers
tick processingclocks
and dtrace 980
scripts 181, 194, 272
sum aggregation 75
task queue probes 1013
tracing the virtual memory system 501
variables
curthread 82
dump() 515
dup() 515
dynamic file system caching 14
dynamic intimate shared memory 315
dynamic linking 53
dynamic reconfiguration 486
dynamically linked libraries 482
E
elfexec() 101
empty_magazines 592
ENOENT 781
envp 97
Ethernet 15
exec 98, 100, 102
exec system call 93
exec() 53, 97, 504
Executable and Linking Format
about 53
and exec 101
debugging 55
ELF file sections 54
ELF header 54
ELF sections 55
examining ELF sections 54
executable data 516
executable text 516
exit() 503
F
fat file system 705
fault() 515
faulta() 515
fbread() 782
fbzero() 782
fd (file descriptor) 707
FDDI 15
FFS 797
fifofs 32
File 764, 779
file descriptors 707, 708
allocating and deallocating 710
limits 713
struct uf_entry 710
file structures 714
file system cache 485, 546
file system Framework 705
file systems 14, 17
block i/o on vnode pages 756
caches 718
buffer cache 824
cyclic cache 485
cyclic page cache 776
dnlc 785
page cache 485
segkpm 767
ufs block buffer 824
caching 14
conversion to solaris 10 794
cyclic page cache 776
directory hierarchy 804
disk-based 14
dnlc 785
doorfs 337
features 17
framework overview 705
history 718
in solaris 32
in zones 419
interaction between segmap and segkpm 773
interfaces
files 714
modules 717, 721
mount 722, 733
page cache 754
unmount 734
vfs 725
vnode 741
vnode macros.see vnode macros.
vnodes 738
introduction 30
log-structured 840
lookup() 781
mdb reference 796
memory allocation policies 775
memory mapped i/o 764
open code path 709
overview 17, 30, 716
path name management 780
root vnode 735
statistics
segmap 772
the vnode 738
tools
fstyp 819
pfiles 716
types 17, 30
nfs 705
pcfs 705
ufs 797
vfs methods 725
vnode life cycle 752
walking vfs with MDB 736
walking vnodes with MDB 757
file sysystems
segkpm 767
files 705
filestat 819
floating point exceptions 26
FLTWATCH 528
fork 93, 503
fork system call 92-??
forklwp 114
free memory 520
free() 515
free-list 546, 547
freemem 977
front hand 555
fsflush
file systems
flush daemon (fsflush) 794
ftok(3C) 301
G
gethrtime 130
gethrtime() 987
getmemid() 515
getoffset() 515
getprot() 516
gettype() 516
getvp() 516
gexec() 102
GLDv2 954
GLDv3 955
global priorities 223
graphics adapters 514
H
handspreadpages 555
hardswap 215
hardware address translation (HAT) 14, 28, 508, 545, 568, 570, 623
HAT functions
hat_alloc() 624
hat_chgattr() 624
hat_clrattr() 624
hat_free_end() 625
hat_free_start() 625
hat_get_mapped_size() 625
hat_getattr() 625
hat_map() 518
hat_memload() 625
hat_setattr() 625
hat_stats_disable() 625
hat_stats_enable() 625
hat_swapin() 625
hat_swapout() 625
hat_sync() 625
hat_unload() 625
mdb reference 684
Overview 623
structures
struct hat 628
ultrasparc 625
ultrasparc hat
tunables 666
hme_blk hash tables 643
hmeblock allocation 642
ism 657
kernel tlb misses 654
large pages 650
locking 662
locking order 664
shadow hme blocks 641
statistics 667
structure
struct hme_blk 638
structures
struct sf_hment 635
syncronization 661
tlb miss handling 653
translation table 631
translation table entry (TTE) 633
tsb allocation 649
tsb consistency 664
tsb miss handling 655
tsb page relocation. 651
tsb probes 655
tsb replacement 652
x64 hat 672
32-bit layour 678
64-bit layout 677
dma 683
implementation overview 679
mmu configuration 672
page tables 680
structures
struct hat 679
struct hment 682
struct htable 680
struct mmu 674
struct page 682
x86
address space layout 675
hardware buffering 892
hash_lookup_depth 592
hash_rescale 592
hash_size 592
HAT Support 536
heap 497, 516
heap mappings 491
High-Resolution Clock Interrupts 980
High-Resolution Timer 986
high-resolution timer 986
hsfs 32
I
I/O Bus and Device Management 17
I/O system 14
IA 14, 23
ibrary mappings 492
incore() 516
inode_cache 580
installboot 807
interprocess 434
interprocess communication
and zones 434
doors 335
kernel implementation 337
use in zones 405
identifier 301
introduction 24
key 301
object permission 302
POSIX 325
interfaces 326
message queues 331
named semaphores 329
semaphores 328
shared memory 327
posix
introduction 26
system v 294-325
access permission 302
introduction 25
ipc objects 294
kernel ipc functions 299
kernel modules 301
locking 297
message queue ID structure 322
message queue tuneables 321
message queues 320
namespace 296
resource controls ??-306
semaphore tuneables 318
semaphores 316
shared memory 307
tuneable parameters 306
Interprocess communication (IPC) 24
Interrupt 287
interrupt latency 13
Interrupt priorities 285
interrupt priorities 285
interrupts 13
dispatcher lock level 198
monitoring 288
Intimate Shared Memory 312, 514
intimate shared memory 312
Introduction 625
IPC 311
IPC - See interprocess communication
IPC See Interprocess communication
ipcrm 311
ISDN 15
ISM - See intimate shared memory
ISM See Intimate Shared Memory
ISM. See Intimate Shared Memory
K
kadb 1024
kas 1041
Kernel 76, 780
kernel 76
address space 566, 571, 1041
segkp segment 87
text segment 566
architecture 16
data structures
struct anon 523
struct segvn_data 517
struct uf_entry 710
struct vpage 520
functions
cfork() 96
chip_balance() 257
clock_tick() 979
cpu_choose() 255
exec_common() 100
exitlwps() 114
freeproc() 112
pid_assign() 96
setbackdq() 255
setfrontdq() 258
kernel runtime linker, krtld 1024
libkvm 1021
locks
lock object operations vector 897
map 566
memory 565
memory allocation 572
memory debugging 605
memory management 29
overview 15
process table 82
segments 27
sleep/wakeup
turnstiles 896
synchronization primitives 886
task queues
about 1003
Kernel Facilities (Clocks, timers, etc.) 17
kernel functions
cpu_resched() 257
kpreempt() 268
resume() 264
sleepq_insert() 278
kernel map 573
kernel Memory Segment Driver 574
kernel thread 76
Kernel Virtual Address Maps 1041
kernel Virtual Memory 565
kirk McKusick 797
kluster() 516
klustsize 561
kmdb
about 1019
module loading and unloading 1030
PROM interface 1036
structure 1027
terminal I/O 1032
kmem_depot_contention 588
kmem_reap_interval 588
kmem_reapahead 588
kstat
process_cache 83
segkp 87
kstats
task queues 1012
L
L2 cache 550
lage pages
free-list organization 531
large pages 486, 530
copy-on-write faults 534
faulting 532
freeing 535
hat support 650
page size-up/down policy 532
page-In 532
page-size code 532
procfs 537
system view 531
tools
libmpss.so 693
pmap 689
ppgsz 693
trapstat 686
-xpagesize 695
tutorial
allocated page sizes 688
compiler directives 695
configuring 692
cpu specifics 699
discovery of supported sizes 691
enabling large pages 692
interfaces 696
interposing with libmpss.so 693
measuring application performance 686
using ppgsz(1m) 693
when to use large pages 685
large-pages
issues 536
locking for i/o 534
lbolt 978
ld.so.1 53
ldstub instruction 890, 893, 894
Least Privilege 347
lgroup See Memory Placement Optimization
lgroups See locality groups
libmpss.so 693
library file 492
library mappings 492
libthread 48
lightweight process
agent LWP 128
and threads 71
displaying with ps 77
exit 113
ID 77
introduction 19
kernel object 74
limits 87
LWP ID 46
lwp_cache 82
observing with dtrace 75
process file system entry 121
relation to process and threads 44
resource usage 74
structure members 56, 76
Lightweight process (LWP) 565, 571
linkers
link-editor 53
runtime 53
runtime LD_DEBUG 55
links 806
load/store buffers (hardware) 892
loadable file system modules 717
locality groups 176
observing with dtrace 181
observing with kstat
Memory Placement Optimization
locality groups
observing with kstat 180
observing with mdb 178
lock 889
lockop() 516
log structured 840
lookuppn() 781
lotsfree 556, 559
LP64 13
lrusage 74, 129
LWP 49
LWP. See Lightweight Process
M
magazines 584
magic(4) 98
major page faults 508
malloc() 492, 496
many 56
mapelfexec() 102
mapped files 493, 498, 517
Massively parallel processor 886
max_nprocs 85, 86, 786
max_percent_cpu 558
maxpgio 560, 563
MAXPID 86
maxslp 562, 563
maxuprc 85
maxusers 84, 786
mdb
components of 1020
dcmds
::findleaks 615
::kmem_verify 617
callout 985
kmastat 82
IPC reference 344
memory 538, 564
module management 1021
projects dcmds and walker 453
walkers
cpu 191
rctl_dict_list 92
zones reference 444
memcntl() 766
memory 893
allocation with memory placement optimization 871
consistency models 893
hardware hierarchies 863
latency 887
locality groups 868
page
introduction 27
statistics
availrmem 525
memory barrier (membar) instructions 894
Memory Management 16
memory management
address spaces 490, 502
allocation 539
anonymous memory 520
backing store 482
copy-on-write 489
demand paging 484
file system memory allocation 775
free-list 546
growing the heap 496
hard swapping 562
hardware 481
hardware address translation 508, 623
heap 497
intimate shared memory 514
introduction 27
kernel address space 571
kernel memory allocation 572
large pages
malloc() 492
mapped files 498
mappings 490
mdb reference for physical memory 564
mdb reference for virtual memory 538
overview 489
page coloring 549
page create throttle 549
page faults 508
major 508
minor 508
protection 508
page level interfaces 547
page scanner 554
paging
minor faults 498
zero-fill-on-demand 497
physical memory allocation 539
physical page list 546
priority paging 554
process 492
process data mappings 491
process heap mappings 491
process stack mappings 492
process stacks 498
process text mappings 491
protection modes 508
sbrk() 497
scheduler 562
segment drivers 512
segmentation violation 509
segments 490
drivers
seg_map 826
seg_map 766
segkpm 767
segvn 516
slab allocator 576
swap scheduler 562
swapfs. see swapfs
swapping 484
TLB 568
tools
pmap 500
using dtrace 501
Watchpoints 527
memory management unit (MMU) 28, 484, 509, 519
Memory Mapped files 517
memory mappings 490
memory page locking 314
Memory Place Optimization
framework 867
Memory Placement Optimization
application programming interfaces 876
kernel parameters 874
locality group hierarchies 868
locality group hierarchy 880
locality group implementation 872
locality group structure 873
locality groups 174, 176, 868
observing with mdb 178
mdb dcmd's and walkers 883
memory allocation 871
on AMD Opteron 869
statistics 882
thread lgroup placement 870
using kstat to get statistics 883
memory placement optimization. see mpo
memory scheduler 562
Memory Sharing and Protection 482
memory_class 592
memorymappedi/o 764
message queues
limits
msgmni 321
POSIX
mq_maxmsq 331
mq_maxsz 331
mq_open(3R) 331
mq_receive(3R) 331
mq_send(3R) 331
System V IPC 25
microstate accounting 66, 130
min_percent_cpu 558
minor faults 498
minor page faults 508
mmap() 499, 518, 764
flags
MAP_PRIVATE 499, 519, 521, 525
MAP_SHARED 499
MMU See memory management unit
Module 724
module loading 17
Module Text and Data 569
mpo 486
MPO See Memory Placement Optimization
MS-DOS file system 14
multiple page sizes. see large pages
Multiprocessor Systems 886
Multithreaded 13, 889
kernel 13
mutex locks 891
adaptive lock 899
and driver interrupt registration 903
and priority level 900
definition 891
fields 903
functions
mutex_exit() 900
mutex_init() 900, 903
mutex_vector_enter() 903
mutex_vector_exit() 905
hardware considerations 889
hardware data hierarchy 892
instructions to implement locks 890
lock waiters bit 904
m_owner field 901
m_spinlock field 902
operations vector 897
overview 898
read-modify-write operation 889
sleep 911
spin locks 898, 899
statistics 904
test-and-set instruction 889
types
MUTEX_DEFAULT 902
mutual exclusion lock See mutex locks
mutual exclusion locks 886
atomic test-and-set instructions 891
N
ncsize 786
netstat -k 580
Network File System 31, 32
network file system 705
Networking 17
checksum offload 964
connection fan-out mechanism 940
Data-Link Services 961
Device Driver Framework 954
GLDv2 954
GLDv3 955
Interrupt Model 965
interrupt vs polling 966
IP
connection structure 939
kernel structures 932
IP Classifier 939
IP multipathing 953
link aggregation 962
loopback connections 946
MAC layer functions 957
multicast 954
plumbing NICs 953
socket programming interfaces 944
Solaris 10
design goals 933
squeue 934
kernel structure 936
processing 936
queuing models 936
stack framework 934
stack with STREAMS 929
TCP
kernel structures 931
TCP with STREAMS 930
UDP
kernel structures 931
UDP implementation 947
variables
ip_squeue_fanout 938
vertical perimeter 934
implementation 935
nfs 705
NFS See Network File System
nfs See Network File System
Niagara See Chip Multithreading
noexec_user_stack 59
Non Uniform Memory Access
about 864, 887
achieving performance 867
cache coherent (cc) NUMA 865
Non Uniform Memory Access. see numa
non_anon() 524
nonpageable 565
nonuniform 887
nucleus 568
numa 486
NUMA See Non Uniform Memory Access
O
Object 739
Object Caching 579
on-disk inode 813
open() 709
open-boot 568
P
p 63
page 482
coloring 547, 549, 552, 553
description 482
fault 508, 519
free list 546
hardware-specific 490
hash list 543
kernel functions
page_create() 547
page_create_va() 548, 552, 573
page_exists() 548
page_find() 543, 548
page_first() 548
page_free() 546, 548
page_hash 543
page_isfree() 548
page_ismod() 548
page_isref() 548
page_isshared() 548
page_lookup() 543, 546, 548
page_lookup_nowait() 543, 548
page_needfree() 548
page_next() 548
lists 546
locking 527
page faults 508
protection 482
reclaims 546
scanner 554
back hand (pager) 555
CPU Utilization Clamp 558
Implementation 560
implementation 560
nru time 558
Operation 554
operation 554
parameters 559
po_share 558
priority paging 554
shared library optimizations 558
tunables 559
structures 545
page (memory)
scanner 29
page cache 485
introduction 29
page Coloring 549
page fault 28
page level interfaces 547
page pache 754
page Protection and Advice 520
page scanner 554
page Structures 545
page table entries 569
page Throttle 549
page throttle 549
PAGE_HASH_SEARCH 544
pageable kernel Memory 571
paged vnodes 754
page-hash 543
page-in 483
page-Level Interfaces 547
pagelock() 516
page-out 482
pageout 482
page-out Algorithm and Parameters 555
pageprot 520
pages 482
definition 542
dirty 483
page-size code 532
pages - Locating 544
parallel architectures 888
Parameters That Limit pages paged Out 559
Partial Store Order (PSO) 893
Path 780
path-name
traversal functions 783
path-names
kernel functions
pn_alloc() 783
pn_free() 784
pn_insert() 784
management 780
traversal 783
pc file system 705
pcfs 32
PCWATCH 528
pfiles 716
physical memory 27, 490
Physical Memory Management 483
Physical page "memseg" Lists 546
physical page list 560
pid 64
pipe 24
pmap 500
POSIX IPC 26
internal functions 325
posix_spawn 94
pr_size 528
pr_vaddr 528
Preempting 22
preemption 289
monitoring with mdb 270
user 265
preemption control 235
prinit() 118
priorities
introduction 22-24
Priority 903
priority inheritance 911
priority inversion 911
priority paging 554
priority ranges 23
privilege 349
prnode 119
Process 84
process 20, 44, 111, 157
address space 47
components of 44
control terminal 160
creation 56, 92
and projects 451
tracing fork with dtrace 95
creation (fork/exec) 92-102
credentials 47, 348
and zones 408
credentials structure 60
displaying resource limits 89
environmental variables 68
execution 16
file descriptor 707
file system interfaces
file systems
process model abstractions 707
GID 60
group structures 159
groups 157
in zones 414
kernel process table 82
limits 87
lineage pointers 63
mappings
data 491
heap 491
libraries 492
stack 492
text 491
maximum per system 84
mdb dcmds 164
microstate accounting 66
open file structures 69
open files 71
open files structures 70
overview 15, 19
priorities 22
privilege set 61
privileges
about 347
allowed in zones 409
and exec 350
changing state 358
debugging 386
least privilege model 347
per-process state 356
privilege awareness 352
privilege sets 349
privilege-aware state 352
root privilege set 351
process identification (PID) structure 64
process states 78
process_cache 82
profiling 66
projects
project ID 446
related process (sibling) links 63
relationship to projects and tasks 455
resource control structures 91
resource controls 454
exceeding 460
max-msg-ids 321
max-msg-messages 322
max-msg-qbytes 322
max-sem-ids 318
max-sem-nsems 318
max-sem-ops 318
resource limits 88
core size 88
data segment size 88
file size 88
open files 89
privilege levels 90
stack size 88
virtual address space size 89
resource usage
lrusage fields 129
scheduling 16
session leader 160
sessions 157
stack 498
states 61, 62, 167
status 61
structure 45, 56
examining with mdb 67
lightweight process and thread support 65
lwp count 102
open files 69
p_as 58
p_cred 59
p_crlock 59
p_exec 58
p_lockp 59
p_lwpcnt 65
p_pglink 63
p_pidflag 62
p_pidp 64
p_ppid 63
p_sessp 64
p_stat 61
p_swapcnt 61
p_utime 65
p_wcode 62
p_wdata 62
PID 64
process file system fields 121
resource control sets 90
time fields 65
structure members 56
support for doors 337
table 44, 82
tasks 446
termination 111
freeproc() kernel function 112
thread objects 45
threads model 48
tools
pfiles 716
UID 60
unified process model 50
user area 68
zombie processes 111
process file system 115-128
file abstraction 120
files and directories 116-118
functions
pr_read_psinfo() 124
implementation 118-128
lightweight process entry 121
prcommon 120
prnode 119
procdir 118
process microstate accounting 130
process rights
debugging 386
in IRIX 354
in Linux 354
least privilege model 347
per-process state 356
privilege awareness 352
privilege-aware state 352
privileges allowed in zones 409
processor
controls
introduction 33
Processor partitioning and binding 14
processors
binding 169
cpu partitions 173
examining types with mdb 173
kernel chip abstractions 172
kernel chip_t structure 177
kernel cpu structure 175
kernel structures 171
parititions 193
processor sets 169, 174
procfs 32
and projects 452
and resource controls 463
in zones 416
libproc in debuggers 1020
projects
about 445
application programming interfaces 468
changing project or task ID 447
fork and exec 451
kernel structures 452
programming interfaces 449
project database 448
project structure 448
resource control policy 459
tracking utilization 446
projid 446
PROM 568
PROT_READ 499
PROT_WRITE 499
protection faults 508
prwatch 528
Pseudo File Systems 31
putpage() 526
Putting 779
R
RAM 481, 543
rctl 91
read() 738
read() and write() system calls 764, 766
reader/writer (RW) locks
definition 906
implementation 907-??
kernel functions
rw_enter() 906
rw_exit() 906
rw_init() 906
reader/writer locks 891, 895
definition 895, 908
functions
rw_enter_sleep() 908
rw_exit_wakeup() 910
kernel functions
rw_enter_sleep() 908
sleep 911
statistics 909
structure 909
wrwant bit 908
read-modify-write operation 889
realtime (scheduling class) 14, 15, 23
realtime_timeout() 981
rechoose_interval 256
reclaim() 583
reclaiming 546
Relaxed Memory Order (RMO) 893
reserved_procs 85
resource controls
attributes 449, 464
kernel functions 473
resource limits
core size 88
CPU time 88
data segment size 88
file size 88
open files 89
stack size 88
virtual address space size 89
resource management
and zones 437
framework 36
introduction 32
overview of bundled features 169
projects and tasks 445
resource map allocator 487
resource pools 174
RLIMIT 102
rlimits 455
root 348
root privileges 351
RT See realtime
runtime linker 53
RW locks See reader/writer locks
S
sbrk() 496, 497
scan rate parameters 556
sched 215
schedpaging() 560
scheduler 235
scheduler See dispatcher
scheduling 14
introduction 22-24
scheduling classes 206-222
class operations vector 213
class-specific data 208
class-specific structures 208
clock tick processing 228
fair share 237-244
kernel structures 212
thread priorities 237
tick processing 237
update processing 237
usage decay 239
fixed priority 245-246
introduction 23
kernel functions 213
admin 214
donice 216
enterclass 214
exitclass 214
fork 214
getclinfo 214
getclpri 214
globpri 216
parmsget 215
parmsin 214
parmsout 214
parmsset 215
preempt 216
setrun 216
sleep 216
swapin 215
swapout 215
tick 216
trapret 216
wakeup 216
yield 216
kernel structures 186, 211
real-time 247-249
dispatcher queues 259
timeshare
dispatcher table 219
dumping with dispadmin 220
ts_globpri 220
ts_maxwait 221
ts_quantum 220
ts_slpret 221
ts_tqexp 221
kernel functions
ts_sleep() 280
sleep 280
thread priorities 231
tick processing 234
update processing 236
types 168
update processing 230
SDLC 15
seg kmem 570, 580
seg_map statistics 772
segkp 87
segkpm 767
segmap 29, 566
memory management
segments
segmap
file systems
caches
segmap 768
segmap_fault() 769, 824
segmap_pagecreate() 826
segmap_release() 769, 826
segment (memory) 27, 512
drivers 14, 510
seg_dev 514
seg_drv 515
seg_kmem 514, 571
seg_kp 514, 571
seg_lock 515
seg_map 514, 571
seg_mapdev 515
seg_nf 515, 571
seg_spt 514
seg_vn 514
kernel segment 566
kernel segment driver methods
segkmem_checkprot() 574
segkmem_create() 574
segkmem_getprot() 574
segkmem_setprot() 574
seg_map segment 571
segmentation violation 509
SEGOP_FAULT() 514
segvn 516
segvn_create() 513, 518
segvn_fault() 519
sem_open(3R) 328, 329
semaphore value 317
semaphores 895
interfaces 328
kernel 895
kernel functions 915
limits (tuneables)
semmsl 318
semopm 318
operations vector 897
P and V operations 915
POSIX 293, 328
sema_sobj_ops 917
System V 25
sequential consistency model 893
sessions 157
set_anoninfo() 524
setfacl 829
setprot() 516
shared libraries 517
shared mappings 492
shared memory
POSIX 327
System V 25
Shared Memory Multiprocessor 886
sharing program binaries 482
si_pc 530
si_trapafter 530
Signals
types
SIGPROF 979
SIGVTALRM 979
signals
asynchronous 146, 151
description 135
dispositions 135
flags
SA_NOCLDWAIT 112
SA_SIGINFO 143
introduction 26
MAXSIG 135
originating as traps 146
resource control exceeded 461
SA_ONSTACK 145
sigaction(2) 117, 143, 145
siginfo 143
sigaltstack(2) 145
sigsend(2) 135
signal set 141
synchronous 135
testing for 149
trap signals 146
types
SIGABRT 111
SIGCHLD 140
SIGCLD 62, 111
SIGKILL 62
SIGSEGV 505, 509
SIGTRAP 528
SIGTSTP 158
SIGTTIN 158
SIGTTOU 158
SIGWAITING 113
SIGXCPU 139
SIGXFSZ 139
SNOWAIT 112
Simultaneous Multithreading 866
single kernel image 887
sixtyfour (64) bit support
64-bit kernel 13
slab allocator 29, 487, 576
::findleaks 615
::kmem_verify 617
allocator logging 618
bufctl_audit 614
cache parameters
kmem_content_maxsave 605
kmem_depot_contention 588
kmem_flags 603
kmem_log_size 605
kmem_reap_interval 588
kmem_reapahead 588
kmem_update_interval 586
KMF_AUDIT 618
KMF_CONTENTS 618
callback interfaces 583
debugging with the redzone 608
depot layer 584, 586
depot_alloc 592
depot_contention 592
depot_free 592
detecting memory corruption 607
detecting uninitialized data 611
examining allocations with MDB 605
fragmentation 577
functions
kmem_cache_alloc() 578, 582
kmem_cache_create() 578, 579, 582
kmem_cache_destroy() 578, 582
kmem_cache_free() 582
kmem_cache_stat() 582
kmem_freepages() 575
kmem_getpages() 575
implementation 583
kernel functions
slab_create 592
slab_destroy 592
slab_size 592
magazine sizes 586
magazines 584
memory allocation logging 612
overview 576
performance 576
rounds 584
statistics 578, 589
buf_avail 591
buf_constructed 592
buf_inuse 592
buf_max 592
buf_size 592
buf_total 592
full_magazines 592
global_alloc 592
global_free 592
magazine_size 592
structures 578
tracing 603
Slab Cache Parameters 588
sleep queues 276
sleeping for an I/O 23
slowscan 556, 560
SMP See Symmetric Multiprocessor
sockfs 32
Soft Swapping 562
softcall() 984
softswap 215
software traps 103
Solaris
Differentiators 12
features 3, 5
solaris history
sunos 2.0 705
Solaris Kernel Architecture 16
solstice diskSuite (SDS) 798
SPARC V7 493
SPARC V9 493
SPARCcenter 2000 493, 566
specfs 32
stack 27, 495, 565, 571
stack mappings 492
static linking 53
STREAMS
application programming interfaces 928
driver
about 927
In the network stack 929
messages 927
msgb structure 928
module definition 927
stream
definition 926
synchronous 950
use of task queues 1018
sun4u 64-bit kernel address space 566
sunos 2.0 705, 797
superuser 348
swap 543
swapfs 524, 561
implementation 525
kernel functions
swapfs_getpage() 525
swapfs_getvp() 525
kernel layer 524
swapfs Implementation 525
swapout() 516
swapping 484, 562
swtch() function 261-262
Symmetric multiprocessing 13
Symmetric multiprocessor 886
symmetric multiprocessor 863, 885
sync() 516
synchronization locks 886
synchronization objects 897
System Calls
interface 16
system calls 102
about 46
exec 52, 93, 97-100, 350, 446
exec switch table 98
examining with mdb 99
execsw structure
exec_magic 98
object-specific functions 98
exec() 53, 55
exit 111-112
fork 52, 65, 92-97, 446
tracing with dtrace 95
fork_fail_pending 96
forkall 96
kill 135
lwp_kill 135
mmap 293, 327
on SPARC 103-111
open 69
read() 766
semget 317, 319
setitimer(2) 987
setppriv 350
sigaction 117
wait 111
write() 766
system clock thread 977
System V IPC 25
System V Message Queues 25
See also message queues 25
System V Semaphores 25
See also semaphores 25
System V Shared Memory 25
See also shared memory 25
T
t 77, 78, 80, 113
task queues
about 1003
and kmem caches 1014
and vmem arenas 1015
device driver interfaces 1011
dtrace probes 1013
dynamic 1004
kernel interfaces 1007
kstat counters 1012
pool model 1006
system_taskq 1005
used by STREAMS 1018
when to use 1003
TCP
STREAMS stack 930
TCP/IP
IP Classifier 939
loopback connections 946
socket programming interfaces 944
TCP implementation 942
UDP implementation 947
text mappings 491
The 721, 776, 778, 785
thread 81, 249
thread creation 16
thread priorities 223
thread scheduler See dispatcher
thread stacks 565
thread, user and kernel
resource usage 74
threads
introduction 19
model 20
new model 21
overview 19
tick processing
clock
thread tick processing 979
threads, user and kernel 76
about 44
and lightweight processes 71
context switching 261
displaying with ps 77
home lgroup placement 870
IDs 77
kernel
about 76
affinity count 77
exit 113
flags 78
interrupt threads 286
maximum number of threads 87
observing lgroups and CPUs with dtrace 181
preempt flag 78
priorities 222
processor binding 77
reaping 114
state
TS_FREE 78
TS_ONPROC 78
TS_RUN 78
TS_SLEEP 78
TS_STOPPED 78
TS_ZOMB 78
states 166
structure fields 77, 77-81
|