このページを編集する際は、[[編集に関する方針]]に従ってください。 *概要 [#vede41e0] -対象:[[ipc_test/postgresql-8.1.4]] -定義:[[postgresql-8.1.4/src/backend/port/sysv_shmem.c]] -(概要を書いてください。) *引数 [#p32e6d26] - Size size -- - bool makePrivate -- - int port -- *実装 [#lc411548] PGShmemHeader * PGSharedMemoryCreate(Size size, bool makePrivate, int port) { -[[PGShmemHeader/ipc_test/postgresql-8.1.4]] -- 下記メンバを持つ構造体型 --int32(signed intの別名)型の変数magic --pid_t型の変数creatorPID --Size(size_tの別名)型の変数totalsize --Size(size_tの別名)型の変数freeoffset --dev_t型の変数device --ino_t型の変数inode -[[Size/ipc_test/postgresql-8.1.4]] -- size_tの別名 -[[bool/ipc_test/postgresql-8.1.4]] -- charの別名 IpcMemoryKey NextShmemSegID; -[[IpcMemoryKey/ipc_test/postgresql-8.1.4]] -- key_tの別名 void *memAddress; PGShmemHeader *hdr; -[[PGShmemHeader/ipc_test/postgresql-8.1.4]] -- 上記参照 IpcMemoryId shmid; -[[IpcMemoryId/ipc_test/postgresql-8.1.4]] -- intの別名 #ifndef WIN32 struct stat statbuf; -stat -- sys/stat.hで定義 #endif /* Room for a header? */ Assert(size > MAXALIGN(sizeof(PGShmemHeader))); -[[Assert()/ipc_test/postgresql-8.1.4]] -- (USE_ASSERT_CHECKINGを指定して生成したバイナリのみ存在)グローバル変数assert_enabledが0以外で、かつ、評価式conditionの結果が0である時、"FailedAssertion"を出力してプログラムを停止する。 -[[MAXALIGN()/ipc_test/postgresql-8.1.4]] -- configureスクリプトによって指定される定数(または定数4)の倍数のうち、LEN以上である最小値を返す。 -[[PGShmemHeader/ipc_test/postgresql-8.1.4]] -- 上記参照 /* Make sure PGSharedMemoryAttach doesn't fail without need */ UsedShmemSegAddr = NULL; -[[UsedShmemSegAddr/ipc_test/postgresql-8.1.4]] -- void型へのポインタ型のグローバル変数(初期値NULL)。 /* Loop till we find a free IPC key */ NextShmemSegID = port * 1000; for (NextShmemSegID++;; NextShmemSegID++) { /* Try to create new segment */ memAddress = InternalIpcMemoryCreate(NextShmemSegID, size); -[[InternalIpcMemoryCreate()/ipc_test/postgresql-8.1.4]] if (memAddress) break; /* successful create and attach */ /* Check shared memory and possibly remove and recreate */ if (makePrivate) /* a standalone backend shouldn't do this */ continue; if ((memAddress = PGSharedMemoryAttach(NextShmemSegID, &shmid)) == NULL) continue; /* can't attach, not one of mine */ /* * If I am not the creator and it belongs to an extant process, * continue. */ hdr = (PGShmemHeader *) memAddress; if (hdr->creatorPID != getpid()) { if (kill(hdr->creatorPID, 0) == 0 || errno != ESRCH) { shmdt(memAddress); continue; /* segment belongs to a live process */ } } /* * The segment appears to be from a dead Postgres process, or from a * previous cycle of life in this same process. Zap it, if possible. * This probably shouldn't fail, but if it does, assume the segment * belongs to someone else after all, and continue quietly. */ shmdt(memAddress); if (shmctl(shmid, IPC_RMID, NULL) < 0) continue; /* * Now try again to create the segment. */ memAddress = InternalIpcMemoryCreate(NextShmemSegID, size); if (memAddress) break; /* successful create and attach */ /* * Can only get here if some other process managed to create the same * shmem key before we did. Let him have that one, loop around to try * next key. */ } /* * OK, we created a new segment. Mark it as created by this process. The * order of assignments here is critical so that another Postgres process * can't see the header as valid but belonging to an invalid PID! */ hdr = (PGShmemHeader *) memAddress; hdr->creatorPID = getpid(); hdr->magic = PGShmemMagic; #ifndef WIN32 /* Fill in the data directory ID info, too */ if (stat(DataDir, &statbuf) < 0) ereport(FATAL, (errcode_for_file_access(), errmsg("could not stat data directory \"%s\": %m", DataDir))); hdr->device = statbuf.st_dev; hdr->inode = statbuf.st_ino; #endif /* * Initialize space allocation status for segment. */ hdr->totalsize = size; hdr->freeoffset = MAXALIGN(sizeof(PGShmemHeader)); /* Save info for possible future use */ UsedShmemSegAddr = memAddress; UsedShmemSegID = (unsigned long) NextShmemSegID; return hdr; } *呼出元 [#i984eba1] -[[main()/ipc_test/postgresql-8.1.4]] *備考 [#lad85dee] /* * PGSharedMemoryCreate * * Create a shared memory segment of the given size and initialize its * standard header. Also, register an on_shmem_exit callback to release * the storage. * * Dead Postgres segments are recycled if found, but we do not fail upon * collision with non-Postgres shmem segments. The idea here is to detect and * re-use keys that may have been assigned by a crashed postmaster or backend. * * makePrivate means to always create a new segment, rather than attach to * or recycle any existing segment. * * The port number is passed for possible use as a key (for SysV, we use * it to generate the starting shmem key). In a standalone backend, * zero will be passed. */ *履歴 [#cd4530ef] |更新日|更新者|更新内容| |????/?/?|[[testnoda/ページ作者]]|Wikiページ作成| |2007/11/11|[[testnoda/ページ作者]]|[[PGSharedMemoryCreate()/postgresql-8.1.4]]より移行| *コメント [#ra545201] - s4hwPv http://www.FyLitCl7Pf7ojQdDUOLQOuaxTXbj5iNG.com -- [[Barnypok]] &new{2017-01-02 (月) 17:35:35}; - MRiu7C http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com -- [[chaba]] &new{2017-01-30 (月) 00:19:20}; - ddDlJT http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com -- [[matt]] &new{2017-01-30 (月) 00:21:20}; - R1iVNa http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com -- [[gordon]] &new{2017-02-01 (水) 02:39:02}; - ' -- &new{2018-09-06 (木) 05:58:45}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:58:50}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:58:50}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:58:51}; - w3bSc9n -- [[,00]] &new{2018-09-06 (木) 05:58:51}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:58:51}; - c:\ -- &new{2018-09-06 (木) 05:58:51}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:58:54}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:58:54}; - ,00 -- [[w3bSc9n]] &new{2018-09-06 (木) 05:58:55}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:58:57}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:58:58}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:58:58}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:02}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:02}; - w3bSc9n -- [[%u0027]] &new{2018-09-06 (木) 05:59:02}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:02}; - c:\Windows\Win.ini -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:02}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:02}; - w3bSc9n -- [[c:\Windows\Win.ini]] &new{2018-09-06 (木) 05:59:03}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:06}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:06}; - %u0027 -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:06}; - http://www.google.com -- &new{2018-09-06 (木) 05:59:06}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:10}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:10}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:11}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:11}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:14}; - w3bSc9n -- [[ ']] &new{2018-09-06 (木) 05:59:14}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:14}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:14}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:15}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:15}; - c:\boot.ini -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:15}; - ' -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:17}; - htTps://www.google.com -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:17}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:17}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:17}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:17}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:17}; - w3bSc9n -- [[htTps://www.google.com]] &new{2018-09-06 (木) 05:59:18}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:21}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:21}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:22}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:22}; - |echo $((99333685+99333685))||a -- &new{2018-09-06 (木) 05:59:22}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:25}; - w3bSc9n -- [[)]] &new{2018-09-06 (木) 05:59:25}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:25}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:25}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:26}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:26}; - w3bSc9n -- [[ | Dir c:\]] &new{2018-09-06 (木) 05:59:29}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:29}; - ) -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:29}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:29}; - www.google.com -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:29}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:30}; - w3bSc9n -- [[www.google.com]] &new{2018-09-06 (木) 05:59:30}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:31}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:31}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:31}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:31}; - w3bSc9n -- [[\"]] &new{2018-09-06 (木) 05:59:34}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:34}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:35}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:35}; - 609037884 -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:35}; - w3bSc9n -- [[678662533]] &new{2018-09-06 (木) 05:59:35}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:38}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:38}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:38}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:38}; - \" -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:40}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:40}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:41}; - htTp://www.google.com -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:41}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:41}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:41}; - w3bSc9n -- [[d:\]] &new{2018-09-06 (木) 05:59:41}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:41}; - wsng;SELECT SLEEP(5);-- -- &new{2018-09-06 (木) 05:59:41}; - w3bSc9n -- [[htTp://www.google.com]] &new{2018-09-06 (木) 05:59:41}; - w3bSc9n -- [[[]] &new{2018-09-06 (木) 05:59:44}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:44}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:44}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:44}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:47}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:47}; - '630882778 -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:47}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:48}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:48}; - w3bSc9n -- [['973793977]] &new{2018-09-06 (木) 05:59:48}; - 26ping -n 5 8.8.8.8& -- &new{2018-09-06 (木) 05:59:48}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:50}; - [ -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:50}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:51}; - e:\ -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:51}; - w3bSc9n -- [[268435455]] &new{2018-09-06 (木) 05:59:54}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:54}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:54}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:55}; - '+benchmark(1000000,sha1(1))+' -- &new{2018-09-06 (木) 05:59:55}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:55}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:57}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:58}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:00}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:00}; - 268435455 -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:01}; - w3bSc9n -- [[-268435455]] &new{2018-09-06 (木) 06:00:06}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:06}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:06}; - file://c/ -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:07}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:11}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:11}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:11}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:11}; - w3bSc9n -- [[file://c/]] &new{2018-09-06 (木) 06:00:12}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:12}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:14}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:14}; -- 268435455 -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:15}; - w3bSc9n -- [[\']] &new{2018-09-06 (木) 06:00:20}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:20}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:20}; - foo/../$value -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:21}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:21}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:26}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:26}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:27}; - w3bSc9n -- [[foo/../$value]] &new{2018-09-06 (木) 06:00:27}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:29}; - w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:30}; - \' -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:30}; - w3bSc9n -- [[\'\");|]*{ <