The NetBSD Project

CVS log for src/common/lib/libc/gen/radixtree.c

[BACK] Up to [cvs.NetBSD.org] / src / common / lib / libc / gen

Request diff between arbitrary revisions


Keyword substitution: kv
Default branch: MAIN


Revision 1.34: download - view: text, markup, annotated - select for diffs
Sat May 4 17:58:24 2024 UTC (7 months, 1 week ago) by chs
Branches: MAIN
CVS tags: perseant-exfatfs-base-20240630, perseant-exfatfs-base, perseant-exfatfs, HEAD
Diff to: previous 1.33: preferred, colored
Changes since revision 1.33: +6 -5 lines
radixtree: allocate memory with KM_NOSLEEP to prevent pagedaemon hangs

Revert the part of rev 1.32 (reapplying "Do away with separate pool_cache
for some kernel objects") that changed the memory allocation for radixtree
nodes from PR_NOWAIT to KM_SLEEP as part of changing from a pool to kmem.
uvm_pageinsert_tree() calls into the radixtree code while holding
the object's vmobjlock, but that same lock is taken by the pagedaemon
in the process of reclaiming pages, and if the pagedaemon happens to
choose the same object to reclaim from that uvm_pageinsert_tree()
is being called on, then these two threads will deadlock.
The previous code already handled memory allocation failures
in uvm_pageinsert_tree() so we can simply change it back to nosleep.

Fixes a hang reported by simonb@, and the fix was also tested by him.

Revision 1.33: download - view: text, markup, annotated - select for diffs
Sat Sep 23 19:17:38 2023 UTC (14 months, 2 weeks ago) by ad
Branches: MAIN
CVS tags: thorpej-ifq-base, thorpej-ifq, thorpej-altq-separation-base, thorpej-altq-separation
Diff to: previous 1.32: preferred, colored
Changes since revision 1.32: +4 -4 lines
kmem_free() -> kmem_intr_free().  Spotted by rin@.

Revision 1.32: download - view: text, markup, annotated - select for diffs
Sat Sep 23 18:21:11 2023 UTC (14 months, 2 weeks ago) by ad
Branches: MAIN
Diff to: previous 1.31: preferred, colored
Changes since revision 1.31: +13 -29 lines
Repply this change with a couple of bugs fixed:

- Do away with separate pool_cache for some kernel objects that have no special
  requirements and use the general purpose allocator instead. On one of my
  test systems this makes for a small (~1%) but repeatable reduction in system
  time during builds presumably because it decreases the kernel's cache /
  memory bandwidth footprint a little.
- vfs_lockf: cache a pointer to the uidinfo and put mutex in the data segment.

Revision 1.31: download - view: text, markup, annotated - select for diffs
Tue Sep 12 16:17:21 2023 UTC (15 months ago) by ad
Branches: MAIN
Diff to: previous 1.30: preferred, colored
Changes since revision 1.30: +29 -12 lines
Back out recent change to replace pool_cache with then general allocator.
Will return to this when I have time again.

Revision 1.30: download - view: text, markup, annotated - select for diffs
Sun Sep 10 14:45:52 2023 UTC (15 months ago) by ad
Branches: MAIN
Diff to: previous 1.29: preferred, colored
Changes since revision 1.29: +12 -29 lines
- Do away with separate pool_cache for some kernel objects that have no special
  requirements and use the general purpose allocator instead.  On one of my
  test systems this makes for a small (~1%) but repeatable reduction in system
  time during builds presumably because it decreases the kernel's cache /
  memory bandwidth footprint a little.
- vfs_lockf: cache a pointer to the uidinfo and put mutex in the data segment.

Revision 1.29: download - view: text, markup, annotated - select for diffs
Mon Mar 6 21:39:06 2023 UTC (21 months, 1 week ago) by andvar
Branches: MAIN
Diff to: previous 1.28: preferred, colored
Changes since revision 1.28: +6 -6 lines
fix few typos in comments and log messages.

Revision 1.28: download - view: text, markup, annotated - select for diffs
Tue May 24 20:50:17 2022 UTC (2 years, 6 months ago) by andvar
Branches: MAIN
CVS tags: netbsd-10-base, netbsd-10-0-RELEASE, netbsd-10-0-RC6, netbsd-10-0-RC5, netbsd-10-0-RC4, netbsd-10-0-RC3, netbsd-10-0-RC2, netbsd-10-0-RC1, netbsd-10
Diff to: previous 1.27: preferred, colored
Changes since revision 1.27: +4 -4 lines
fix various typos in comment, documentation and log messages.

Revision 1.27: download - view: text, markup, annotated - select for diffs
Thu May 14 08:34:19 2020 UTC (4 years, 7 months ago) by msaitoh
Branches: MAIN
CVS tags: cjep_sun2x-base1, cjep_sun2x-base, cjep_sun2x, cjep_staticlib_x-base1, cjep_staticlib_x-base, cjep_staticlib_x
Diff to: previous 1.26: preferred, colored
Changes since revision 1.26: +5 -5 lines
Remove extra semicolon.

Revision 1.17.44.4: download - view: text, markup, annotated - select for diffs
Tue Apr 21 19:37:49 2020 UTC (4 years, 7 months ago) by martin
Branches: phil-wifi
Diff to: previous 1.17.44.3: preferred, colored; branchpoint 1.17: preferred, colored; next MAIN 1.18: preferred, colored
Changes since revision 1.17.44.3: +3 -3 lines
Ooops, restore accidently removed files from merge mishap

Revision 1.17.44.3
Tue Apr 21 18:41:22 2020 UTC (4 years, 7 months ago) by martin
Branches: phil-wifi
FILE REMOVED
Changes since revision 1.17.44.2: +3 -3 lines
Sync with HEAD

Revision 1.17.44.2: download - view: text, markup, annotated - select for diffs
Mon Apr 13 07:45:07 2020 UTC (4 years, 8 months ago) by martin
Branches: phil-wifi
Diff to: previous 1.17.44.1: preferred, colored; branchpoint 1.17: preferred, colored
Changes since revision 1.17.44.1: +103 -54 lines
Mostly merge changes from HEAD upto 20200411

Revision 1.26: download - view: text, markup, annotated - select for diffs
Sat Apr 11 01:46:47 2020 UTC (4 years, 8 months ago) by ad
Branches: MAIN
CVS tags: phil-wifi-20200421, phil-wifi-20200411, bouyer-xenpvh-base2, bouyer-xenpvh-base1, bouyer-xenpvh-base, bouyer-xenpvh
Diff to: previous 1.25: preferred, colored
Changes since revision 1.25: +13 -13 lines
Match the naming convention in the file.

Revision 1.25: download - view: text, markup, annotated - select for diffs
Fri Apr 10 23:43:05 2020 UTC (4 years, 8 months ago) by ad
Branches: MAIN
Diff to: previous 1.24: preferred, colored
Changes since revision 1.24: +85 -24 lines
PR kern/54979 (radixtree might misbehave if ENOMEM)

- radix_tree_insert_node(): if the insert failed due to ENOMEM, roll back
  any updates made to the tree.

- radix_tree_grow(): either succeed or fail, never make partial adjustments
  to the tree.

- radix_tree_await_memory(): allocate & free the maximum possible number of
  nodes required by any insertion.

Revision 1.24: download - view: text, markup, annotated - select for diffs
Fri Apr 10 21:56:41 2020 UTC (4 years, 8 months ago) by ad
Branches: MAIN
Diff to: previous 1.23: preferred, colored
Changes since revision 1.23: +26 -38 lines
Rename radix_tree_node_clean_p() to radix_tree_node_sum() and have it return
the computed sum.  Use to replace any_children_tagmask().  Simpler & faster.

Revision 1.17.44.1: download - view: text, markup, annotated - select for diffs
Wed Apr 8 14:03:05 2020 UTC (4 years, 8 months ago) by martin
Branches: phil-wifi
Diff to: previous 1.17: preferred, colored
Changes since revision 1.17: +477 -226 lines
Merge changes from current as of 20200406

Revision 1.20.2.1: download - view: text, markup, annotated - select for diffs
Sat Feb 29 20:17:43 2020 UTC (4 years, 9 months ago) by ad
Branches: ad-namecache
Diff to: previous 1.20: preferred, colored; next MAIN 1.21: preferred, colored
Changes since revision 1.20: +23 -24 lines
Sync with head.

Revision 1.23: download - view: text, markup, annotated - select for diffs
Tue Jan 28 22:20:45 2020 UTC (4 years, 10 months ago) by ad
Branches: MAIN
CVS tags: phil-wifi-20200406, is-mlppp-base, is-mlppp, ad-namecache-base3
Diff to: previous 1.22: preferred, colored
Changes since revision 1.22: +5 -23 lines
gang_lookup_scan(): if a dense scan and the first sibling doesn't match,
the scan is finished.

Revision 1.22: download - view: text, markup, annotated - select for diffs
Tue Jan 28 16:33:34 2020 UTC (4 years, 10 months ago) by ad
Branches: MAIN
Diff to: previous 1.21: preferred, colored
Changes since revision 1.21: +20 -3 lines
Add a radix_tree_await_memory(), for kernel use.

Revision 1.21: download - view: text, markup, annotated - select for diffs
Sun Jan 12 20:00:41 2020 UTC (4 years, 11 months ago) by para
Branches: MAIN
Diff to: previous 1.20: preferred, colored
Changes since revision 1.20: +4 -4 lines
initialize radix_tree_node_cache with PR_LARGECACHE

this increases the cache groups from 15 to 63 items in order
to reduce traffic between pool cache layers
this is the same as for other highly frequented pool caches as the pvpool and anonpool

Revision 1.20: download - view: text, markup, annotated - select for diffs
Thu Dec 5 19:03:39 2019 UTC (5 years ago) by ad
Branches: MAIN
CVS tags: ad-namecache-base
Branch point for: ad-namecache
Diff to: previous 1.19: preferred, colored
Changes since revision 1.19: +5 -3 lines
Fix warning that appears when compiling in kernel.

Revision 1.19: download - view: text, markup, annotated - select for diffs
Thu Dec 5 18:50:41 2019 UTC (5 years ago) by ad
Branches: MAIN
Diff to: previous 1.18: preferred, colored
Changes since revision 1.18: +66 -29 lines
Delete the counter from "struct radix_tree_node", and in the one place we
need a non-zero check, substitute with a deterministic bitwise OR of all
values in the node.  The structure then becomes cache line aligned.

For each node we now need only touch 2 cache lines instead of 3, which makes
all the operations faster (measured), amortises the cost of not having a
counter, and will avoid intra-pool-page false sharing on MP.

Revision 1.18: download - view: text, markup, annotated - select for diffs
Thu Dec 5 18:32:25 2019 UTC (5 years ago) by ad
Branches: MAIN
Diff to: previous 1.17: preferred, colored
Changes since revision 1.17: +412 -199 lines
Merge radixtree changes from yamt-pagecache.

Revision 1.17.2.6: download - view: text, markup, annotated - select for diffs
Thu May 22 19:09:50 2014 UTC (10 years, 6 months ago) by yamt
Branches: yamt-pagecache
Diff to: previous 1.17.2.5: preferred, colored; branchpoint 1.17: preferred, colored; next MAIN 1.18: preferred, colored
Changes since revision 1.17.2.5: +13 -7 lines
suppress gcc warnings

Revision 1.17.2.5: download - view: text, markup, annotated - select for diffs
Tue Mar 25 16:21:08 2014 UTC (10 years, 8 months ago) by yamt
Branches: yamt-pagecache
CVS tags: yamt-pagecache-tag8
Diff to: previous 1.17.2.4: preferred, colored; branchpoint 1.17: preferred, colored
Changes since revision 1.17.2.4: +37 -10 lines
comments.  some ascii arts to explain memory consumption.

Revision 1.17.2.4: download - view: text, markup, annotated - select for diffs
Wed Aug 1 21:09:27 2012 UTC (12 years, 4 months ago) by yamt
Branches: yamt-pagecache
Diff to: previous 1.17.2.3: preferred, colored; branchpoint 1.17: preferred, colored
Changes since revision 1.17.2.3: +136 -104 lines
make tag-variants of radix tree functions take and return a mask of tags
rather than tag ids so that they can deal with multiple tags at once.

Revision 1.17.2.3: download - view: text, markup, annotated - select for diffs
Wed Jun 13 14:18:49 2012 UTC (12 years, 6 months ago) by yamt
Branches: yamt-pagecache
Diff to: previous 1.17.2.2: preferred, colored; branchpoint 1.17: preferred, colored
Changes since revision 1.17.2.2: +8 -3 lines
comment

Revision 1.17.2.2: download - view: text, markup, annotated - select for diffs
Fri Feb 17 08:16:55 2012 UTC (12 years, 9 months ago) by yamt
Branches: yamt-pagecache
Diff to: previous 1.17.2.1: preferred, colored; branchpoint 1.17: preferred, colored
Changes since revision 1.17.2.1: +102 -72 lines
comments

Revision 1.17.2.1: download - view: text, markup, annotated - select for diffs
Fri Nov 25 13:58:11 2011 UTC (13 years ago) by yamt
Branches: yamt-pagecache
Diff to: previous 1.17: preferred, colored
Changes since revision 1.17: +168 -55 lines
radix_tree_gang_lookup_node and its variants: add a option to stop on a hole.

Revision 1.17: download - view: text, markup, annotated - select for diffs
Wed Nov 2 13:49:43 2011 UTC (13 years, 1 month ago) by yamt
Branches: MAIN
CVS tags: yamt-pagecache-base9, yamt-pagecache-base8, yamt-pagecache-base7, yamt-pagecache-base6, yamt-pagecache-base5, yamt-pagecache-base4, yamt-pagecache-base3, yamt-pagecache-base2, yamt-pagecache-base, tls-maxphys-base, tls-maxphys-20171202, tls-maxphys, tls-earlyentropy-base, tls-earlyentropy, rmind-smpnet-nbase, rmind-smpnet-base, riastradh-xf86-video-intel-2-7-1-pre-2-21-15, riastradh-drm2-base3, riastradh-drm2-base2, riastradh-drm2-base1, riastradh-drm2-base, riastradh-drm2, prg-localcount2-base3, prg-localcount2-base2, prg-localcount2-base1, prg-localcount2-base, prg-localcount2, phil-wifi-base, phil-wifi-20191119, phil-wifi-20190609, pgoyette-localcount-base, pgoyette-localcount-20170426, pgoyette-localcount-20170320, pgoyette-localcount-20170107, pgoyette-localcount-20161104, pgoyette-localcount-20160806, pgoyette-localcount-20160726, pgoyette-localcount, pgoyette-compat-merge-20190127, pgoyette-compat-base, pgoyette-compat-20190127, pgoyette-compat-20190118, pgoyette-compat-1226, pgoyette-compat-1126, pgoyette-compat-1020, pgoyette-compat-0930, pgoyette-compat-0906, pgoyette-compat-0728, pgoyette-compat-0625, pgoyette-compat-0521, pgoyette-compat-0502, pgoyette-compat-0422, pgoyette-compat-0415, pgoyette-compat-0407, pgoyette-compat-0330, pgoyette-compat-0322, pgoyette-compat-0315, pgoyette-compat, perseant-stdc-iso10646-base, perseant-stdc-iso10646, netbsd-9-base, netbsd-9-4-RELEASE, netbsd-9-3-RELEASE, netbsd-9-2-RELEASE, netbsd-9-1-RELEASE, netbsd-9-0-RELEASE, netbsd-9-0-RC2, netbsd-9-0-RC1, netbsd-9, netbsd-8-base, netbsd-8-3-RELEASE, netbsd-8-2-RELEASE, netbsd-8-1-RELEASE, netbsd-8-1-RC1, netbsd-8-0-RELEASE, netbsd-8-0-RC2, netbsd-8-0-RC1, netbsd-8, netbsd-7-nhusb-base-20170116, netbsd-7-nhusb-base, netbsd-7-nhusb, netbsd-7-base, netbsd-7-2-RELEASE, netbsd-7-1-RELEASE, netbsd-7-1-RC2, netbsd-7-1-RC1, netbsd-7-1-2-RELEASE, netbsd-7-1-1-RELEASE, netbsd-7-1, netbsd-7-0-RELEASE, netbsd-7-0-RC3, netbsd-7-0-RC2, netbsd-7-0-RC1, netbsd-7-0-2-RELEASE, netbsd-7-0-1-RELEASE, netbsd-7-0, netbsd-7, netbsd-6-base, netbsd-6-1-RELEASE, netbsd-6-1-RC4, netbsd-6-1-RC3, netbsd-6-1-RC2, netbsd-6-1-RC1, netbsd-6-1-5-RELEASE, netbsd-6-1-4-RELEASE, netbsd-6-1-3-RELEASE, netbsd-6-1-2-RELEASE, netbsd-6-1-1-RELEASE, netbsd-6-1, netbsd-6-0-RELEASE, netbsd-6-0-RC2, netbsd-6-0-RC1, netbsd-6-0-6-RELEASE, netbsd-6-0-5-RELEASE, netbsd-6-0-4-RELEASE, netbsd-6-0-3-RELEASE, netbsd-6-0-2-RELEASE, netbsd-6-0-1-RELEASE, netbsd-6-0, netbsd-6, matt-nb8-mediatek-base, matt-nb8-mediatek, matt-nb6-plus-nbase, matt-nb6-plus-base, matt-nb6-plus, localcount-20160914, khorben-n900, bouyer-socketcan-base1, bouyer-socketcan-base, bouyer-socketcan, agc-symver-base, agc-symver
Branch point for: yamt-pagecache, phil-wifi
Diff to: previous 1.16: preferred, colored
Changes since revision 1.16: +34 -7 lines
comments

Revision 1.16: download - view: text, markup, annotated - select for diffs
Tue Oct 25 14:11:27 2011 UTC (13 years, 1 month ago) by yamt
Branches: MAIN
Diff to: previous 1.15: preferred, colored
Changes since revision 1.15: +22 -3 lines
add radix_tree_empty_tagged_tree_p, a "tagged" variant of
radix_tree_empty_tree_p.

Revision 1.15: download - view: text, markup, annotated - select for diffs
Fri Oct 14 19:42:15 2011 UTC (13 years, 2 months ago) by yamt
Branches: MAIN
Diff to: previous 1.14: preferred, colored
Changes since revision 1.14: +223 -33 lines
- add functions to scan the tree in the reverse order
  (i wonder if it's the longest function name in the tree)
- assertions
- comments
- fix and update unittest

Revision 1.14: download - view: text, markup, annotated - select for diffs
Fri Oct 14 16:15:54 2011 UTC (13 years, 2 months ago) by yamt
Branches: MAIN
Diff to: previous 1.13: preferred, colored
Changes since revision 1.13: +4 -5 lines
unwarp a short line

Revision 1.13: download - view: text, markup, annotated - select for diffs
Fri Oct 14 16:10:47 2011 UTC (13 years, 2 months ago) by yamt
Branches: MAIN
Diff to: previous 1.12: preferred, colored
Changes since revision 1.12: +9 -7 lines
constify

Revision 1.12: download - view: text, markup, annotated - select for diffs
Fri Oct 14 16:06:05 2011 UTC (13 years, 2 months ago) by yamt
Branches: MAIN
Diff to: previous 1.11: preferred, colored
Changes since revision 1.11: +19 -9 lines
fix "get_tag" result of unittest

Revision 1.11: download - view: text, markup, annotated - select for diffs
Fri Oct 14 15:31:35 2011 UTC (13 years, 2 months ago) by yamt
Branches: MAIN
Diff to: previous 1.10: preferred, colored
Changes since revision 1.10: +23 -22 lines
make the output of unittest a little machine-readable

Revision 1.10: download - view: text, markup, annotated - select for diffs
Fri Oct 14 15:18:05 2011 UTC (13 years, 2 months ago) by yamt
Branches: MAIN
Diff to: previous 1.9: preferred, colored
Changes since revision 1.9: +6 -6 lines
int -> unsigned int where appropriate

Revision 1.9: download - view: text, markup, annotated - select for diffs
Fri Oct 14 15:16:59 2011 UTC (13 years, 2 months ago) by yamt
Branches: MAIN
Diff to: previous 1.8: preferred, colored
Changes since revision 1.8: +10 -3 lines
add a function to check if a tree is empty.

Revision 1.8: download - view: text, markup, annotated - select for diffs
Fri Oct 14 15:15:27 2011 UTC (13 years, 2 months ago) by yamt
Branches: MAIN
Diff to: previous 1.7: preferred, colored
Changes since revision 1.7: +4 -3 lines
include string.h for memset

Revision 1.7: download - view: text, markup, annotated - select for diffs
Thu May 19 10:06:56 2011 UTC (13 years, 6 months ago) by yamt
Branches: MAIN
CVS tags: cherry-xenmp-base, cherry-xenmp
Diff to: previous 1.6: preferred, colored
Changes since revision 1.6: +19 -4 lines
radix_tree_clear_tag:
- fix a bug which errornously clears tags on intermediate nodes.
- add comments.

Revision 1.6: download - view: text, markup, annotated - select for diffs
Thu May 19 10:01:21 2011 UTC (13 years, 6 months ago) by yamt
Branches: MAIN
Diff to: previous 1.5: preferred, colored
Changes since revision 1.5: +5 -3 lines
radixtree: assertions

Revision 1.5: download - view: text, markup, annotated - select for diffs
Thu May 19 10:00:30 2011 UTC (13 years, 6 months ago) by yamt
Branches: MAIN
Diff to: previous 1.4: preferred, colored
Changes since revision 1.4: +25 -3 lines
radixtree: comments

Revision 1.4: download - view: text, markup, annotated - select for diffs
Thu May 19 09:58:28 2011 UTC (13 years, 6 months ago) by yamt
Branches: MAIN
Diff to: previous 1.3: preferred, colored
Changes since revision 1.3: +36 -3 lines
radixtree: comments

Revision 1.3: download - view: text, markup, annotated - select for diffs
Tue Apr 26 20:53:53 2011 UTC (13 years, 7 months ago) by yamt
Branches: MAIN
Diff to: previous 1.2: preferred, colored
Changes since revision 1.2: +28 -8 lines
fix _STANDALONE build

Revision 1.2: download - view: text, markup, annotated - select for diffs
Thu Apr 14 15:42:02 2011 UTC (13 years, 8 months ago) by yamt
Branches: MAIN
Diff to: previous 1.1: preferred, colored
Changes since revision 1.1: +6 -10 lines
- fix _STANDALONE build.
- use __CTASSERT instead of CTASSERT.  enable it for userland.
- __read_mostly.

Revision 1.1.2.2: download - view: text, markup, annotated - select for diffs
Sat Mar 5 15:08:32 2011 UTC (13 years, 9 months ago) by bouyer
Branches: bouyer-quota2
Diff to: previous 1.1.2.1: preferred, colored; branchpoint 1.1: preferred, colored; next MAIN 1.2: preferred, colored
Changes since revision 1.1.2.1: +1122 -0 lines
Sync with HEAD

Revision 1.1.2.1
Tue Feb 22 21:31:15 2011 UTC (13 years, 9 months ago) by bouyer
Branches: bouyer-quota2
FILE REMOVED
Changes since revision 1.1: +0 -1122 lines
file radixtree.c was added on branch bouyer-quota2 on 2011-03-05 15:08:32 +0000

Revision 1.1: download - view: text, markup, annotated - select for diffs
Tue Feb 22 21:31:15 2011 UTC (13 years, 9 months ago) by yamt
Branches: MAIN
CVS tags: bouyer-quota2-nbase
Branch point for: bouyer-quota2
an implementation of radix tree.  the idea from linux.

Diff request

This form allows you to request diffs between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.

Log view options

CVSweb <webmaster@jp.NetBSD.org>