]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add the "number_of_cores" TCL command to the testfixture.
authordrh <>
Fri, 24 Feb 2023 13:25:49 +0000 (13:25 +0000)
committerdrh <>
Fri, 24 Feb 2023 13:25:49 +0000 (13:25 +0000)
FossilOrigin-Name: 16ee5a7b5d02cad51a35d5675fcc5bb50a62d1f243bde107fc89fed44ffd6a43

manifest
manifest.uuid
src/test1.c

index 58e5915b7312d792c39c862a30fab6ae0e9d8747..669fc532bdc707de40177397392e73343fd2ed59 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Slightly\sfaster\sand\smore\sprecise\sfloating-point\sto\sdecimal\sconversion.\nSee\s[forum:/forumpost/d1387c3979c7f557|forum\sthread\sd1387c3979c7f557]\sfor\ndiscussion.
-D 2023-02-24T11:54:40.435
+C Add\sthe\s"number_of_cores"\sTCL\scommand\sto\sthe\stestfixture.
+D 2023-02-24T13:25:49.251
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -631,7 +631,7 @@ F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a3
 F src/status.c 160c445d7d28c984a0eae38c144f6419311ed3eace59b44ac6dafc20db4af749
 F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
 F src/tclsqlite.c 8522a04fb9c84faa1d80354430ae0ee9349727a3a4b32e3cfe39b9be8324cabd
-F src/test1.c 29ab8aca939818a61bf791e4ff5d45df6da30940c0980dcf502562b925de4e05
+F src/test1.c e23623dc569d2d18d1201d624ec279e9a96f0d9e83bf0620c8680d62b35d4ee7
 F src/test2.c 827446e259a3b7ab949da1542953edda7b5117982576d3e6f1c24a0dd20a5cef
 F src/test3.c 61798bb0d38b915067a8c8e03f5a534b431181f802659a6616f9b4ff7d872644
 F src/test4.c 4533b76419e7feb41b40582554663ed3cd77aaa54e135cf76b3205098cd6e664
@@ -2046,9 +2046,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P de6c5c6bb49a0beca793cdc0462da2c17bb05f3292e08dd815be29b45b59a8fb f32055e8110a2eac6c9e26d1d1e620f0668bcb475d49d309dc549cea05e1e582
-R d1a241fa3d7686eec8ef50c8409ad626
-T +closed f32055e8110a2eac6c9e26d1d1e620f0668bcb475d49d309dc549cea05e1e582
+P 6dea6f4738fc7d003183e94f08bd95181f23e165a966882c0bdc64708a05a607
+R ec9d2605f4b41b74f37dda061eea41aa
 U drh
-Z bef52b6fcdf6ca2cb08784252d92c2c0
+Z 7c7b73264f13980fd1dcea1f8e67ede6
 # Remove this line to create a well-formed Fossil manifest.
index aeef2fe36b75e2e3371cb1e92b87d0ac8a108e26..5aacf306c1200edb6e2884c561392ee2219ee916 100644 (file)
@@ -1 +1 @@
-6dea6f4738fc7d003183e94f08bd95181f23e165a966882c0bdc64708a05a607
\ No newline at end of file
+16ee5a7b5d02cad51a35d5675fcc5bb50a62d1f243bde107fc89fed44ffd6a43
\ No newline at end of file
index b1f0baafcea35c493bb99a172d8b871fe1b8f260..39efd09ca0178e19dba0e63c6799467aec007588 100644 (file)
 #include "sqliteInt.h"
 #if SQLITE_OS_WIN
 #  include "os_win.h"
+#  include <windows.h>
+#else
+#  include <unistd.h>
+#  if defined(__APPLE__)
+#    include <sys/param.h>
+#    include <sys/sysctl.h>
+#  endif
 #endif
 
 #include "vdbeInt.h"
@@ -8639,6 +8646,40 @@ static int SQLITE_TCLAPI test_autovacuum_pages(
   return TCL_OK;
 }
 
+/*
+** Usage:  number_of_cores
+**
+** Return a guess at the number of available cores available on the
+** processor on which this process is running.
+*/
+static int SQLITE_TCLAPI guess_number_of_cores(
+  void * clientData,
+  Tcl_Interp *interp,
+  int objc,
+  Tcl_Obj *CONST objv[]
+){
+  unsigned int nCore = 1;
+#if SQLITE_OS_WIN
+  SYSTEM_INFO sysinfo;
+  GetSystemInfo(&sysinfo);
+  nCore = (unsigned int)sysinfo.dwNumberOfProcessors;
+#elif defined(__APPLE__)
+  int nm[2];
+  size_t len = 4;
+  nm[0] = CTL_HW; nm[1] = HW_AVAILCPU;
+  sysctl(nm, 2, &nCore, &len, NULL, 0);
+  if( nCore<1 ){
+    nm[1] = HW_NCPU;
+    sysctl(nm, 2, &nCore, &len, NULL, 0);
+  }
+#else
+  nCore = sysconf(_SC_NPROCESSORS_ONLN);
+#endif
+  if( nCore<=0 ) nCore = 1;
+  Tcl_SetObjResult(interp, Tcl_NewIntObj((int)nCore));
+  return SQLITE_OK;
+}
+
 
 /*
 ** Register commands with the TCL interpreter.
@@ -8939,6 +8980,7 @@ int Sqlitetest1_Init(Tcl_Interp *interp){
      { "test_write_db",            test_write_db,           0 },
      { "sqlite3_register_cksumvfs", test_register_cksumvfs,  0 },
      { "sqlite3_unregister_cksumvfs", test_unregister_cksumvfs,  0 },
+     { "number_of_cores",             guess_number_of_cores,     0 },
   };
   static int bitmask_size = sizeof(Bitmask)*8;
   static int longdouble_size = sizeof(LONGDOUBLE_TYPE);